2

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

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

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

4

5 回答 5

6

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

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

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

于 2012-07-27T17:44:57.873 回答
2

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

于 2012-07-27T17:45:18.747 回答
1

您必须在 URL 中使用$_GET而不是$_POST

于 2012-07-27T17:45:02.537 回答
1

如果它在 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 中,它就会在那里。

于 2012-07-27T17:50:05.567 回答
0

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

于 2012-07-27T17:56:20.400 回答