我有最简单的形式,我想做的就是回显文本框中写的任何内容。
HTML:
<form action="" method="post">
<input type="text" name="firstname">
<input type="submit" name="submit" value="Submit">
</form>
PHP:
if(isset($_POST['submit'])){
$test = $_POST['firstname'];
echo $test;
}
问题是它不能在我的服务器上运行(它可以在另一台服务器上运行)。有人知道什么地方可能出问题吗?服务器上还有其他形式,可以正常工作。
最终,我注意到萤火虫的网络标签上实际上有两个请求正在处理;首先是带有301响应的POST,然后是带有200响应的GET。
听起来好像大多数人都认为是与interweb有关,这与mod_rewrite有关,导致POST请求重定向并因此更改为GET。
在我的情况下,这不是因为mod_rewrite而引起的,这要简单得多...我的POST URL还包含一个GET查询字符串,该字符串以不带斜杠的形式开始。这是导致Apache重定向的原因。
发现差异...
差:http://blah.de.blah/my/path?key=value&otherkey=othervalue好:http://blah.de.blah/my/path/?key=value&otherkey=othervalue
最下面的一个不会引起重定向,而是给我$ _POST!
<input type="text" name="firstname" id="firstname">
此外,此link也可能有帮助。
编辑:
您也可以替代
<code>if(isset($_POST['submit'])){</code>
带有此:
<code>if($_SERVER['REQUEST_METHOD'] == "POST"){ </code>
这始终是检查是否已提交表单的最佳方法
var_dump($GLOBALS);
这将告诉您有关页面数据的“内容”和“位置”。
HTML:
<form action="" method="post">
<input type="text" name="firstname">
<input type="submit" name="submit" value="Submit">
</form>
PHP:
if(isset($_REQUEST['submit'])){ $test = $_REQUEST['firstname']; echo $test; }
要解决此添加问题,必须在开始时将此规则添加到htaccess中,以免重写URL:
RewriteRule ^ my_action.php-[PT]
post_max_size
设置为与upload_max_filesize
相同,就破坏了post方法。我认为post_max_size
必须小于upload_max_filesize
。在RHEL 6.0中使用PHP 5.3.3进行了测试]
尝试一下
var_dump($_GLOBALS)
。