2012-02-23 2 views
0

В PHP Я пытаюсь создать новую папку типа базы данных для разных людей при регистрации и добавлении файлов. Я мог бы легко создавать файлы и писать для них, но по какой-то причине каждый раз, когда я пытаюсь создать PHP-файлы с использованием переменной имени пользователя person в качестве пути, все, что она делает, это создать папку с именем $ username.PHP, создающий путь и папки с именами переменных

Вот мой код, сложенный к основам этой части.

<?php 
$title = $_POST["title"]; 
$myFile = "https://stackoverflow.com/users/$username/title.txt"; 
$fh = fopen($myFile, 'w') or die("There was an error in changing your title. <br />"); 
$stringData = "$title\n"; 
fwrite($fh, $stringData); 
fclose($fh); 

$template = $_POST["temp"]; 
$myFile = "$structure/template.txt"; 
$fh = fopen($myFile, 'w') or die("There was an error in changing your template. <br />"); 
$stringData = "$template\n"; 
fwrite($fh, $stringData); 
fclose($fh); 
?> 
+3

В чем проблема? –

+0

Где код для создания каталога? – Treffynnon

+1

Вы пытались вырвать $ username из строки: '$ myFile ="/users /".$ username. "/ Title.txt"; ' – BenOfTheNorth

ответ

1

Try This

<?php 
$title = $_POST["title"]; 
$myFile = "https://stackoverflow.com/users/".$username."/title.txt"; 
$fh = fopen($myFile, 'w') or die("There was an error in changing your title. <br />"); 
$stringData = $title."\n"; 
fwrite($fh, $stringData); 
fclose($fh); 

$template = $_POST["temp"]; 
$myFile = $structure."/template.txt"; 
$fh = fopen($myFile, 'w') or die("There was an error in changing your template. <br />"); 
$stringData = $template."\n"; 
fwrite($fh, $stringData); 
fclose($fh); 
?> 
0

Чтобы сделать эту работу, вам нужно разбить эту переменную (как указано Бен Griffiths) из строки и проверьте, не пуст. Кроме того, убедитесь, что вы создали каталог, созданный сначала с помощью mkdir() (aschuler упомянул об этом также). Код, таким образом, может выглядеть примерно так, но, не зная, где $ имя пользователь, $ структура, $ названия и $ шаблон пришли, вам, возможно, придется это немного изменить:

<?php 
$title = $_POST['title']; 
if (trim($username) == '') { 
    die("No username passed in!"); 
} else { 
    $userdir = "/users".$username."/"; 
    mkdir($userdir); 
    $fh = fopen($userdir."title.txt", 'w') or die("There was an error in changing your title. <br />"); 

    $stringData = $title."\n"; 
    fwrite($fh, $stringData); 
    fclose($fh); 
} 

$template = $_POST['temp']; 
if (trim($template) == '') { 
    die("No template passed in!"); 
} else { 
    $structdir = $structure."/"; 
    mkdir($structdir); 
    $fh = fopen($structdir."template.txt", 'w') or die("There was an error in changing your template. <br />"); 

    $stringData = $template."\n"; 
    fwrite($fh, $stringData); 
    fclose($fh); 
} 

?> 

Надеется, что это помогает.

+0

Это должно работать, я вижу, что он должен, но по какой-то причине, даже когда я делаю это, он создает папку с именем $ username или код, прежде чем я его вообще не создавал. Как вы думаете, его права на мою папку? –

+0

Вряд ли. Я запустил скрипт на своем сервере, и, хотя да, мне пришлось изменить разрешения в папке, в которой я запускал скрипт в 0755, когда он работал, он правильно создал каталоги с переменной $ username. – Ocracoke

0

Вы говорите, что это /users/$username/title.txt создать именно /users/$username/title.txt

так Ваша проблема в том что вам нужно, чтобы поймать $ имя первого, я не знаю, как ваш код выглядеть, но может быть это?

<?php $username=$_SESSION['username']; //retrieve the username 
    //rest of your code 
    $myFile = "https://stackoverflow.com/users/$username/title.txt"; 
$fh = fopen($myFile, 'w') or die("There was an error in changing your title. <br />"); 
$stringData = "$title\n"; 
fwrite($fh, $stringData); 
fclose($fh); 

$template = $_POST["temp"]; 
$myFile = "$structure/template.txt"; 
$fh = fopen($myFile, 'w') or die("There was an error in changing your template. <br />"); 
$stringData = "$template\n"; 
fwrite($fh, $stringData); 
fclose($fh); 
?> 
+0

У меня есть эти настройки, это только часть моего кода. –

Смежные вопросы