2015-08-15 77 views
0

我想知道为什么:没有在我的PHP页面上单击表单上的提交按钮,0​​变量已经设置。PHP _POST数组

例如,我有这样的一段代码的网页上:

if (isset($_POST)){ 
    echo "XXXXXXX"; 
} 

原来只是在页面加载时的第一次的XXXXXX是呼应 - 在这一点上我当然有没有使用POST向服务器提交任何数据。为什么会这样呢?

回答

0

$_POST是一个超全局数组,它总是被设置。如果你没有使用post方法给它传递任何值,它将是空的。因此,一个值设置为这个数组,并检查该值是否可用或者不喜欢这样的:

if(isset($_POST['submit'])){ 
//Do this... 
} 
0

检查变量是否为空。将始终设置为$_POST

所以像下面应该工作:

if(!empty($_POST['textFieldName'])){ 
    echo "XXXXXXX"; 
} 
1

由于上PHP.net指定,则自动创建它。

这是一个'超全球'或自动全局变量。这仅仅意味着它在整个脚本的所有范围内都可用。没有必要做全局$变量;在函数或方法中访问它。

要解决您的代码,它创建,但它是空的。

为了更好的测试,如果用户已经做出了POST要求,只需测试上$_POST的指数,像isset($_POST['someFieldName'])

你的代码应该测试它是否为空或不:

if(!empty($_POST)){ 
    echo "a"; 
} 

if(isset($_POST['someFieldName'])){ 
    echo "a"; 
} 
0

同样是为$_GET超全局真。无论HTTP方法如何,都会始终设置它们。您可以检查是否有请求是POSTGETPUT等通过检查REQUEST_METHOD

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // this was an HTTP POST request 
} 
0

$ _ POST是超全局变量,它总是设置为空数组。 试试这个,只是为了更好地理解:

if(!is_null($_POST)) 
{ 
    print_r($_POST); 
} 

为什么这会帮助你理解吗? - 因为isset检查是否设置了变量并且不是NULL。