我正在做一个注册表单,但似乎无法写入文本文件。在这段代码中,我将一个人的真实姓名放在acc/pplid/[name] .txt文件中。该文件根本不写 - echo不输出任何内容。我正在使用我的电脑上的Microsoft Webmatrix。提前致谢!PHP没有写入文件
$irlname = $_POST["irlname"];
$name = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$name = htmlentities($name);
echo $name;
file_put_contents("acc/pplid/".name.".txt", $irlname);
echo file_get_contents("acc/pplid/".$name.".txt");
仅供参考,这允许你把在名称中NUL字节,使用''../目录树中的要上去覆盖任意文件。 HTML转义文件名也没有意义。无法写入的文件可以被读取 - 所以代码是双重的。 – ThiefMaster
对不起,我的代码是双重错误的。我逃过了文件名,因为它是另一端的文本框,没有任何检查。如果你想告诉我如何防止NUL字节,这将是有益的。我最关心的是让它工作。 :P谢谢,虽然。我会研究它。 – Andrey
对于这种情况(除了使用数据库而不是平面文件),唯一安全的方法是使用严格的白名单来验证字符串 – ThiefMaster