根据用户名在目录中创建子文件夹,然后在创建的子文件夹中插入 CSV 文件

Creating a subfolder in directory based off of Username then inserting a CSV file in that subfolder created

我有 php 工作,当用户注册他的用户名和密码时,它会获取用户名和 his/her 密码并将其插入到 users.txt 文件中。我还可以使用它在一般用户文件夹中创建一个具有该用户名的子文件夹。我想要它做的是创建一个 books.csv 文件并将其放入刚刚在用户名后创建的子文件夹中。

这是我到目前为止所拥有的,我已经尝试过但它不起作用:

<?php 

// Identify the directory and file to use:
$dir = 'C:/xampp/htdocs/users/';
$file = $dir . 'users.txt';



if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Handle the form.

    $problem = FALSE; // No problems so far.

    // Check for each value...
    if (empty($_POST['username'])) {
        $problem = TRUE;
        print '<p class="error">Please enter a username!</p>';
    }   

    if (empty($_POST['password1'])) {
        $problem = TRUE;
        print '<p class="error">Please enter a password!</p>';
    }

    if ($_POST['password1'] != $_POST['password2']) {
        $problem = TRUE;
        print '<p class="error">Your password did not match your confirmed password!</p>';
    } 

    if (!$problem) { // If there weren't any problems...

        if (is_writable($file)) { // Open the file.

            // Create the data to be written:
            $subdir = $_POST['username']; // folder to be created after the user name 
            $data = $_POST['username'] . "\t" . sha1(trim($_POST['password1'])) . "\t" . $subdir . PHP_EOL; // data is users name encrypted password

            // Write the data:
            file_put_contents($file, $data, FILE_APPEND | LOCK_EX);

            // Create the directory:

            mkdir ($dir . $subdir); // making a directory within a directory of folder name of user name 

            //EVERYTHING WORKS TILL HERE IS WHERE I GET STUCK

            $filename = 'books.csv';

            file_put_contents($dir . $subdir. $filename);


            // Print a message:
            print '<p>You are now registered!</p>';

        } else { // Couldn't write to the file.
            print '<p class="error">You could not be registered due to a system error.</p>';
        }

    } else { // Forgot a field.
        print '<p class="error">Please go back and try again!</p>'; 
    }

} else { // Display the form.




// Leave PHP and display the form:

    ?>

我已经尝试过其他方法,它会将一个 .csv 文件作为 username-books-.csv 插入到常规用户文件夹中,但由于某些原因我无法创建 books.csv在新创建的用户名子文件夹中。

有什么建议吗?

您缺少将 / 添加到您的路径。

$dir . $subdir 将是

C:/xampp/htdocs/users/myusername.

再加上 books.csv 就像你做的那样会导致

C:/xampp/htdocs/users/myusernamebooks.csv

解决方案:

$filename = 'books.csv';
file_put_contents($dir . $subdir . PATH_SEPARATOR . $filename); // Append the directory separator aswell

请注意,您的 post 遗漏了 file_put_contents 的第二个参数 - 所以我在这个答案中也将其遗漏了,因为我不知道您放在那里的是什么。不过这不是可选的。