php - HTML 表单 POST $_REQUEST 数据消失

标签 php html forms

我已经检查过这段代码几次。

这是发送 POST 数据的表单:

<form action="/loginwizard" method="post">
<input type="hidden" name="action" value="login">
Email:
<br>
<input type="text" name="email" id="email" size=100>
<br>
Password:
<br>
<input type="password" name="pword" id="pword" size=100>
<br>
<input type="submit" value="Login">
</form>

我的 php 脚本使用:

print_r($_REQUEST);

结果是:

Array()

这是使用:

PHP:版本 5.6.8,

系统:Windows NT XXX-PC 6.1 build 7601(Windows 7 Home Premium Edition Service Pack 1)i586

Apache:Apache/2.4.12 (Win32) OpenSSL/1.0.1l PHP/5.6.8

如果它有任何意义,always_populate_raw_post_data 设置为 0

最佳答案

The ODDEST thing about this is if I CHANGE action="/loginwizard" to action="/loginwizard/index.php" The form works great. I have a suspicion this is due to something in the Xampp installation?

这是因为DirectorySlash指令,默认设置为On

它会导致 Apache 向带有尾部斜杠的 URL 发出外部重定向 - 并且浏览器会在该重定向后使用 GET 请求,因此您的 POST 数据会丢失。

关闭该指令可能会产生安全隐患,请参阅手册中的警告 - 但这不是必需的,只需将表单操作指向开头带有斜杠的目录即可:

<form action="/loginwizard/" method="post">
                          ^

然后请求将被传递到该目录的索引文件/脚本(通过 DirectoryIndex 指令),在本例中是 index.php,但是没有外部重定向,因此您的 POST 数据将出现在 $_REQUEST$_POST 中。如果您只想让此脚本处理通过 POST 请求接收的数据,那么我建议使用后者,更具体地说。否则,GET 和 COOKIE 数据可能会产生干扰,具体取决于 PHP 的 request_order/variables_order 配置设置值。

关于php - HTML 表单 POST $_REQUEST 数据消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35374898/

相关文章:

php - 从目录中为所有类生成测试

php - Memcache - 存储 mysql 结果

php - 为什么Heap的算法会出现重复

html - 为什么不在 HTML 和 CSS 标签后加分号?

html - 如何使用CSS中的边距属性将Div元素放在中心

html - 相当大的输入文件和提交按钮在同一行

php - 在两个单词之间包含空格 Javascript if() 语句

C# 在 <form runat ="server"> </form> 中有多个客户端表单?

javascript - 在动态表单中增加表单输入字段名称属性的索引

php - CakePHP 1.3 和 Ubuntu 16.04