URL POST not hitting isset($_POST)


URL POST not hitting isset($_POST)

我有一个简单的php测试页面,如下所示

<?php
if(isset($_POST['hitme']))
{
    echo "hello world";
}
?>

我正在点击这个页面,http://www.abc.com/page.php?hitme=true但这并没有回应任何东西。这有什么问题吗?

使用 $_GET['hitme'] ,而不是$_POST ,因为您在查询字符串中传递了值。 $_POST将保存通过<form action='post'>发送的值,但不包括在查询字符串中传递的值。

if(isset($_GET['hitme'])) {...}

建议阅读 PHP 的超全局数组之间的差异。

$_POST仅包含作为HTTP POST请求的一部分发布到页面的变量。如果您在浏览器地址栏中键入地址,则发出的是 GET 请求,而不是 POST 请求,并且不会在 $_POST 中设置任何变量。即使您发出 POST 请求,在查询字符串上指定的变量仍然仅在 $_GET 中可用,因此在本例中,无论哪种方式都使用了错误的数组。

当它在URL中时,必须使用$_GET而不是$_POST

如果它在 URL 中,例如 http://example.com/index.php?hitme=true,它在$_GET

但是,如果您希望它在 $_POST 中,您必须执行以下操作(非常基本的示例(:

<form method="post" action="page.php">
    <input type="checkbox" name="hitme" value="true" />
    <input type="submit" value="Post data!" />
</form>

此脚本将允许用户根据需要检查它,然后单击"发布数据!

但是,只要用户未单击该按钮,它就不会$_POST。至于$_GET,只要它在URL中,它就会在那里。

或者

你可以使用$_REQUEST['hitme'],这个将检查$_POST['hitme']$_GET['hitme']