PHP создает путь и папки с именами переменных - PullRequest
0 голосов
/ 23 февраля 2012

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

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

<?php
$title = $_POST["title"];
$myFile = "/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 ]

1 голос
/ 23 февраля 2012

Попробуйте

<?php
$title = $_POST["title"];
$myFile = "/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 голосов
/ 23 февраля 2012

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

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

<?php $username=$_SESSION['username']; //retrieve the username 
    //rest of your code 
    $myFile = "/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 голосов
/ 23 февраля 2012

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

<?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);
}

?>

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...