post方法不能以html格式工作

时间:2017-07-27 10:27:15

标签: php html

我有这个简单的html表单并使用post方法。

<html>
  <form action = "read.php" method="post">
        <input type="text" name ="name">
        <input type="submit">
  </form>
</html>

这是我的php:

if(isset($_POST["name"])){
   echo "sent";
}
else
{
   echo "not sent";
}

当我运行代码“未发送”时会出现消息。似乎一切正常 但它不起作用,而GET方法正常工作并显示“已发送”消息。问题是什么?

2 个答案:

答案 0 :(得分:0)

首先,确保您的标记有效。请注意,您有一些不应有空格的空格(例如name ="name")。至少应该有一个空白的HTML文档,其中的内容位于<body>标记内:

<!DOCTYPE html>
<html>
<head></head>
<body>
    <form action="read.php" method="post">
        <input type="text" name="name">
        <input type="submit">
    </form>
</body>
</html>

从您的问题中不清楚上述表单是在read.php内还是单独的脚本?

如果它们是分开的(例如表单在index.php中),请在浏览器中运行index.php。它应该发布到read.php,它必须位于相同的相对目录中。如果表单和PHP在相同的脚本中,则在浏览器中运行read.php

使用PHP本身,您最好通过输出帖子的内容来尝试调试它,例如

var_dump($_POST);

如果有效,您将获得一个包含发布后的表单内容的数组。只有在填写name字段并按下提交按钮后才会显示,例如

array(1) { ["name"]=> string(4) "andy" }

回到您问题中的代码...如果您的所有代码都在同一个脚本中,它会在页面加载时说“未发送”,因为此时没有发布任何内容。只有在您填写name字段并按下提交按钮后,它才会输出“已发送”。

你想知道为什么这个“适用”GET方法。嗯,原因是因为GET会将表单字段附加到URL。在页面加载时,您运行index.php。没有$_GET个参数。提交表单后,将操纵URL(例如index.php?name=andy)。所以在页面加载时它会显示“未发送”,但是一旦它在URL中有?name=andy,它就会说“已发送”,因为这是一个GET参数。

答案 1 :(得分:-3)

除了缺少body标签,脚本才能正常工作。

可能是你想避免&#34;未发送&#34;表单提交前的消息?

使用此:

   <?php
    if ($_POST) {
        if(isset($_POST["name"])){
            echo "sent";
        }
        else
        {
            echo "not sent";
        }
    }
?>

这样你就可以检查$ _POST数组是否存在(意味着发送了帖子),然后如果$ _POST [&#34; name&#34;]有值