$ _POST superglobal为空,$ _REQUEST不是,但检查显示POST的正确请求方法

时间:2014-02-20 19:43:50

标签: php forms post

我有以下表格:

<form name="mainLogin" class="Login" action="login.php" method="post">
<p><label for="user">Username</label><input type="text" name="user" class="field" value="" /></p>
<p><label for="pass">Password</label><input type="password" name="loginpass" class="field" /></p>
<p><label for="remember">Remember Me</label><input type="checkbox" name="remember" /></p>
<p class="submit"><input type="submit" name="submit" class="submit" value="Submit"/></p>
</form>

当我提交表单时,请求方法通过以下方式正确检测为POST方法:

   $post = $_SERVER['REQUEST_METHOD'] == 'POST' ? TRUE : FALSE;

返回值1,因此它确实认识到它是我理解的post方法。

我可以在这里查看提交的值:

print "CONTENT_TYPE: " . $_SERVER['CONTENT_TYPE'] . "<BR />";
$data = file_get_contents('php://input');
print "DATA: <pre>";
print "data dump:";
var_dump($data);
print "post dump:";
var_dump($_POST);
print "request dump:";
var_dump($_REQUEST);
print "</pre>";

- 输出:

CONTENT_TYPE: application/x-www-form-urlencoded
DATA:
data dump:string(54) "user=iamauser&loginpass=hereismypassword&submit=Submit"
post dump:NULL
request dump:array(7) {
  ["user"]=>
  string(8) "iamauser"
  ["loginpass"]=>
  string(16) "hereismypassword"
  ["submit"]=>
  string(6) "Submit"
  ["umnmobileprompted"]=>
  string(1) "1"
  ["s_fid"]=>
  string(33) "18220EB1AE5FB45B-1C283313CA70F773"
  ["s_lv"]=>
  string(13) "1382110868576"
  ["PHPSESSID"]=>
  string(26) "52954uech9k413ssk62kvsmdb4"
}

这个网络表单用于工作,我不知道任何更改,虽然我不确定服务器上的配置是否已更改。在我去找他们之前,我想知道我应该寻找什么,以及我应该问他们可能会导致这种行为。

以下是要求的输出:

print_r post says: 1
var_dump iniget post max size says: string(2) "8M" 
var_dump server request method says: string(4) "POST"

1 个答案:

答案 0 :(得分:0)

这已经解决了。

它与$ _POST数据无关,但与处理中的旧函数无关,该函数用于从$ _POST数据中删除魔术引号。如果魔术引号实际上已关闭,则不会返回任何数据,因此它被返回为空。