基本的PHP表单不起作用

时间:2011-02-12 03:42:05

标签: php forms post

我是PHP新手并尝试将输入保存到文本文件,但POST操作不执行任何操作:

<form method="POST" action="<?php $_SERVER["PHP_SELF"]; ?>">
Name: <input type="text" name="usersname"/><br/>
<input type="submit" value="Write" name="submitwrite"/>
</form>

并在顶部的同一个文件中:

<?php
    // Check if the user submitted this form
if (isset($_POST["submitwrite"])) {
    // Open the file in write mode
    $handle = fopen("writetest.txt","a+"); 

    // If successful
    if ($handle) {
        // Write to that handle the username submitted in the form and the date
        fwrite($handle,$_POST["usersname"] . " - " . date("Y-m-d"));

        // Close the file
        fclose($handle);
    }
}
?>

我点击按钮,它不会自我发布....如何解决?

更新:感谢您的回答。问题在于文件权限...服务器不允许我设置777,只有755.此代码没有任何问题。我很高兴你帮助我发现了这个!!

6 个答案:

答案 0 :(得分:3)

<?php $_SERVER["PHP_SELF"]; ?>做什么?它不会打印任何内容,因此您的表单无法提交。

请尝试使用<?php echo $_SERVER["PHP_SELF"]; ?><?php print($_SERVER["PHP_SELF"]); ?>


此外,如果这无济于事,将fopen("writetest.txt","a+");更改为fopen("writetest.txt","w");可能会有所帮助吗?

答案 1 :(得分:3)

你忘了回应这个动作。但这没关系,因为如果你想POST到同一个URL,你应该完全省略该属性。

答案 2 :(得分:1)

对我来说,你的代码运行正常,但是,我认为你没有工作,因为该目录没有写入权限。

运行chmod 0777 diretory_name

答案 3 :(得分:1)

我怀疑<?php $_SERVER["PHP_SELF"]; ?>没有按照您的预期行事。

如果我没记错,如果您可以通过删除action属性来避免此问题,那么表单将默认发布到“自身”(相同的网址)。

答案 4 :(得分:1)

如果您在本地进行测试,则必须在“writetest.txt”上为User和IUSR设置读/写权限。

修复它的步骤:

  • 右键单击文件“writetest.txt”
  • 转到“属性”。
  • 点击安全。
  • 单击“编辑”。选择IUSR和USER
  • 检查两个用户的“写入”框。
  • 保存设置。

答案 5 :(得分:0)

你在动作php语句中缺少一个echo。然而,表格仍然应该自行发布。

尝试:

if (isset($_POST)) {
    var_dump($_POST);
}