13

我正在尝试使用<form method="post">. 在我的笔记本电脑上的 MAMP 上一切正常,但是当我将脚本上传到服务器(Windows)时它不起作用;$_POST 数组似乎是空的。

我注释掉了所有内容,除了基本的骨头,它仍然不起作用。

索引.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 也不起作用)。

注意这一切在本地主机上都可以正常工作,但在服务器(运行 Windows)上却不行。所以这似乎是服务器的问题,但我不知道是什么。您可以在此处查看 PHPInfo:http: //brailleapps.org/phpinf0.php

有任何想法吗?

编辑:解决了!见下文。

4

4 回答 4

4

我最终把它修好了,我想我不妨在这里发布什么有用的东西,以防其他人将来遇到同样的问题。

原来这些 HTTP 模块之一干扰了 POST:

RadCompression
RadUploadModule

关闭这些模块后,POST 工作正常。

(注意这是在一个全新的应用程序上,我知道没有任何现有代码可能依赖于其中一个模块......关闭它们可能会产生我不知道的意外后果,YMMV。)

于 2013-04-17T08:07:01.240 回答
2

一种可能性是 POST 不是服务器上允许的动词:

http://www.iis.net/configreference/system.webserver/security/requestfiltering/verbs

于 2013-03-13T13:06:28.957 回答
0

我在 $_POST 为空/NULL 时遇到了同样的问题,在花了 30 分钟搜索 SO 和 Google 之后,我终于找到了一个适合我的解决方案。

由于我不知道如何更改 MAMP 的 php.ini 文件,因此我编辑了我的 htaccess 以包含以下内容:

php_value post_max_size 60M
php_value upload_max_filesize 60M

我现在可以使用提交的输入进行 var_dump($_POST) 了。

参考链接:http ://helpfulcoder.blogspot.ca/2011/01/empty-post-array-in-mamp.html

于 2013-09-18T18:04:52.973 回答
0

另一件事是,如果您曾经更改 .htaccess 以隐藏格式 Example .php 或 .html

action="filename.php" 而不是这个给 action="filename"

你的问题解决了。

于 2022-02-13T10:25:34.777 回答