编辑 - 我已经关闭了这篇文章,因为我只能得出结论,服务器上当前的PHP版本存在问题。 PHP接受$ _GET变量没问题,但任何接收/发送$ _POST变量的尝试都完全失败。
我有一个愚蠢的小形式:
<form action="http://www.domain.com/login" method="POST">
<input type="hidden" name="loginPage" value="login">
<table class="login">
<tr><td>Email Address</td><td><input type="text" class="txt" name="usr"></td></tr>
<tr><td>Password</td><td><input type="password" class="txt" name="psw"></td></tr>
<tr><td colspan=2><input type="submit" class="submit right" value="Log in"></td></tr>
</table>
</form>
我在$ _POST中没有收到任何数据。在页面顶部我转储:
var_dump($_POST);
我得到了:
array(0) { }
这非常烦人。
任何人都知道为什么?
修改
有网址重写,请参阅以下内容(来自.HTACCESS):
Options +FollowSymlinks
RewriteEngine on
RewriteOptions MaxRedirects=10
AddType "text/html; charset=UTF-8" html
AddType "text/plain; charset=UTF-8" txt
RewriteRule ^login$ "login.php" [NC]
RewriteRule ^login/$ "login.php" [NC]
但是我看不出有什么问题,当我们设置它时,它工作正常吗?看起来最近发生了一些变化(它不是我的服务器)?但还有什么可能阻碍呢?
答案 0 :(得分:4)
如果没有看到真正的网址,很难确定,但可能的解释是:
您的PHP程序确实在/login/index.php
,因此当浏览器向/login
发出POST请求时,服务器会以301 Redirect
回复/login/
。
这会导致浏览器向/login/
发出GET请求,而$_POST
将为空。
如果是这种情况,解决方案是使用action="http://example.com/login/"
(最后加/
)。
答案 1 :(得分:1)
更改此
<form action="http://www.domain.com/login" method="POST">
到
<form action="http://www.domain.com/login.php" method="POST">