即使文件(“php:// input”),$ _POST数组也是空的;正确返回值

时间:2016-03-22 08:28:24

标签: php forms post

问题:

$ _ POST数组为空,即使文件(“php:// input”);正确返回值(见下文)

我的表单:

<form class="form-horizontal" name="loginform" method="post" action="<?= $_SERVER['PHP_SELF']; ?>">
    <div class="form-group">
        <label for="">Username</label>
        <input class="form-control" type="text" step="any" name="username" value="">
    </div>
    <div class="form-group">
        <label for="">Password</label>
        <input class="form-control" type="password" step="any" name="password" value="">
    </div>
    <div class="form-group">
        <input class="btn btn-warning" type="submit" name="submit" value="Submit">
    </div>
</form>

<?php
$mypostdata = file("php://input");
print "<pre>";
var_dump($_POST);
var_dump($mypostdata);
print "</pre>"
?>

我的输出:

array(0) {
}
array(1) {
[0]=>
string(46) "username=aravind&password=secret&submit=Submit"
}

2 个答案:

答案 0 :(得分:1)

当我使用PhpStorm(第三方应用程序)访问该文件时,它使用的链接是(&#34; http:// localhost:63342 /emitest/loginform.php**& #34;)和$ _POST没有用。

当我通过直接在浏览器中输入链接(&#34; http:// localhost /emitest/loginform.php")来访问该文件时,$ _POST正常工作。

因此,目录/端口是问题,这就是$ _POST丢失数据的地方。

答案 1 :(得分:-1)

无论表格如何,您的PHP代码都会执行。

你必须在if:

中包含它
<?php
if (isset($_POST['submit'])) { // i.e. if the submit button has been clicked
  $mypostdata = file("php://input");
  print "<pre>";
  var_dump($_POST);
  var_dump($mypostdata);
  print "</pre>"
}
?>

有关使用PHP的表单的更多信息:http://php.net/manual/en/tutorial.forms.phphttp://www.html-form-guide.com/php-form/php-form-action-self.html