【发布时间】:2013-03-01 10:27:20
【问题描述】:
我正在尝试使用<form method="post"> 构建一个简单的登录系统。在我的笔记本电脑上的 MAMP 上一切正常,但是当我将脚本上传到服务器(Windows)时它不起作用; $_POST 数组好像是空的。
我把所有内容都注释掉了,但还是不行。
index.php:
<form id="login-form" method="POST" action="_scripts/check_login.php">
Email Address
<input name="login-email" type="text" id="login-email">
Password
<input name="login-password" type="text" id="login-password">
<input type="submit" name="Submit" id="login-button" value="Login">
</form>
_scripts/check_login.php:(除了一些用于调试的 var_dumps,我已经删除了所有内容)
var_dump($_POST);
$loginEmail = trim($_POST['login-email']);
echo '<br>';
$loginPassword = ($_POST['login-password']);
var_dump($loginEmail);
echo '<br>';
var_dump($loginPassword);
当我提交表单时,无论我在文本字段中输入什么,我都会看到:
array(0) { }
string(0) ""
NULL
如果我在上述两个文件中将“post”的所有实例更改为“get”,一切正常。但我不想使用get。 (如果我使用 method="post" 提交表单,$_REQUEST 也不起作用)。
NB 这一切在 localhost 上都可以正常工作,但在服务器(运行 Windows)上却不行。所以这似乎是服务器的问题,但我不知道是什么。您可以在此处查看 PHPInfo:http://brailleapps.org/phpinf0.php
有什么想法吗?
编辑:解决了!见下文。
【问题讨论】:
-
$_SERVER包含哪些 POST 请求?你试过enctype吗?是否允许 FastCGI 客户端接收POST verb for IIS? -
我们遇到了同样的问题,但是一旦我们转移到实时服务器,ajax 帖子就无法正常工作。经过长时间的努力,我们发现服务器的 mod rewrite 模块关闭了。一旦打开一切都很好。所以检查一下。但据我所知,POST和mod rewrite没有关系。试一试。
-
这可能是内容类型的问题。如果没有内容类型被识别或丢失,则
$_POST为空。尝试设置if(empty($_SERVER['CONTENT_TYPE'])) {$_SERVER['CONTENT_TYPE'] = "application/x-www-form-urlencoded";}。var_dump(file_get_contents('php://input'));说什么? -
您能否检查 _SERVER["REQUEST_METHOD"] 变量以确保它被有效地作为 Post 发送?