我有一个简单的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']