我想知道为什么:没有在我的PHP页面上单击表单上的提交按钮,0变量已经设置。PHP _POST数组
例如,我有这样的一段代码的网页上:
if (isset($_POST)){
echo "XXXXXXX";
}
原来只是在页面加载时的第一次的XXXXXX
是呼应 - 在这一点上我当然有没有使用POST向服务器提交任何数据。为什么会这样呢?
我想知道为什么:没有在我的PHP页面上单击表单上的提交按钮,0变量已经设置。PHP _POST数组
例如,我有这样的一段代码的网页上:
if (isset($_POST)){
echo "XXXXXXX";
}
原来只是在页面加载时的第一次的XXXXXX
是呼应 - 在这一点上我当然有没有使用POST向服务器提交任何数据。为什么会这样呢?
$_POST
是一个超全局数组,它总是被设置。如果你没有使用post方法给它传递任何值,它将是空的。因此,一个值设置为这个数组,并检查该值是否可用或者不喜欢这样的:
if(isset($_POST['submit'])){
//Do this...
}
检查变量是否为空。将始终设置为$_POST
。
所以像下面应该工作:
if(!empty($_POST['textFieldName'])){
echo "XXXXXXX";
}
由于上PHP.net指定,则自动创建它。
这是一个'超全球'或自动全局变量。这仅仅意味着它在整个脚本的所有范围内都可用。没有必要做全局$变量;在函数或方法中访问它。
要解决您的代码,它是创建,但它是空的。
为了更好的测试,如果用户已经做出了POST
要求,只需测试上$_POST
的指数,像isset($_POST['someFieldName'])
你的代码应该测试它是否为空或不:
if(!empty($_POST)){
echo "a";
}
或
if(isset($_POST['someFieldName'])){
echo "a";
}
同样是为$_GET
超全局真。无论HTTP方法如何,都会始终设置它们。您可以检查是否有请求是POST
,GET
,PUT
等通过检查REQUEST_METHOD
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// this was an HTTP POST request
}
$ _ POST是超全局变量,它总是设置为空数组。 试试这个,只是为了更好地理解:
if(!is_null($_POST))
{
print_r($_POST);
}
为什么这会帮助你理解吗? - 因为isset检查是否设置了变量并且不是NULL。