URL POST未命中isset($ _ POST)

时间:2012-07-27 17:43:53

标签: php

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

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

我正在点击此页面http://www.abc.com/page.php?hitme=true,但这并不是回应任何事情。这有什么不对吗?

5 个答案:

答案 0 :(得分:6)

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

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

建议阅读about the differences between PHP's superglobal arrays.

答案 1 :(得分:3)

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

答案 2 :(得分:1)

如果在网址

中,您必须使用$_GET代替$_POST

答案 3 :(得分:1)

如果它在网址中,例如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中就会存在。

答案 4 :(得分:0)

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