编辑:我使用了if语句的var_dump($ _ POST) OUTSIDE 。
我尝试了多种解决方案,但没有一种方法有效,所以这是我解决此问题的最后一次尝试。我有一个用HTML编写的表单,通过POST将数据发送到PHP脚本,无论出于何种原因,PHP脚本只读取$ _POST为空。
这是我的PHP代码:
if (isset($_POST['login'])) {
die('test');
}
这是我的HTML表单:
<form action="api/login.php" method="post">
<input type="text" name="login-email" placeholder="Email">
<input type="password" name="login-password" placeholder="Password">
<input type="checkbox" name="login-remember-me" checked>
<button name="login" type="submit">Login</button>
</form>
var_dump($_POST);
返回:
array(0){}
file_get_contents('php://input');
返回:
登录电子邮件=用户%40email.com&安培;登录密码= 123123&安培;登录记-ME = ON&安培;登录名=
就像我说的那样,我已经尝试了几十次谷歌搜索这个问题后遇到的每一个解决方案。我在使用IntelliJ IDEA 15.0.4的Windows 10 Enterprise x64上使用PHP 5.5.32 NTS。
编辑:执行var_dump($ GLOBALS),我的输入保持在[“HTTP_RAW_POST_DATA”]内,并没有在其他地方结束。我也尝试过使用PHP 5.6.19 NTS而不是5.5.32,但仍然没有解决这个问题。
答案 0 :(得分:1)
我注意到您在提交按钮时没有value
。试着把价值放在上面。这就是为什么你的PHP代码总是不在if语句中,因为没有设置$_POST['login']
。
根据您的帖子:
登录电子邮件=用户%40email.com&安培;登录密码= 123123&安培;登录记-ME = ON&安培;登录名=
所以在PHP代码中:
if (isset($_POST['login'])) { //there is no value on $_POST['login] so it skips the statement.
var_dump($_POST);
}
但如果你像下面的样本那样给它一个值:
<form action="api/login.php" method="post">
<input type="text" name="login-email" placeholder="Email">
<input type="password" name="login-password" placeholder="Password">
<input type="checkbox" name="login-remember-me" checked>
<button name="login" value="login" type="submit">Login</button>
</form>
它会产生这样的东西:
登录电子邮件=用户%40email.com&安培;登录密码= 123123&安培;登录记-ME = ON&安培;登录名=登录
如果条件满足,那么你就是PHP。
if (isset($_POST['login'])) {
var_dump($_POST);
}
<强>输出:强>
array(4){[“login-email”] =&gt; string(4)“test”[“login-password”] =&gt; string(4)“test”[“login-remember-me”] =&gt; string(2)“on”[“login”] =&gt; string(5)“login”}