我有最简单的形式,我想做的就是回复文本框中写的任何内容。
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;
}
问题是它无法在我的服务器上运行(它可以在另一台服务器上运行)。有没有人知道什么可能是错的?服务器上还有其他形式,工作正常。
答案 0 :(得分:18)
你可以做的一件事:
[可选]尝试同时包含“名称”和“ID”属性,例如
<input type="text" name="firstname" id="firstname">
如果您在Linux环境中,请检查您是否对该文件具有读/写权限。
此外,此link也可能有所帮助。
编辑:
您也可以替换
if(isset($_POST['submit'])){
有了这个:
if($_SERVER['REQUEST_METHOD'] == "POST"){
。这始终是检查表单是否已提交的最佳方式
答案 1 :(得分:17)
今天晚上我有类似的东西让我感到沮丧。提交表单给了我$ _REQUEST中的值但不是$ _POST。
最后我注意到在firebug的网络选项卡上实际上有两个请求正在通过;首先是301响应的POST,然后是200响应的GET。
狩猎互联网听起来像大多数人认为这与mod_rewrite有关,导致POST请求重定向,从而改为GET。
在我的情况下,责备不是mod_rewrite,它更简单...我的POST的URL也包含一个GET查询字符串,该字符串在URL上没有斜杠。这是导致apache重定向的原因。
发现差异......
坏:http://blah.de.blah/my/path?key=value&otherkey=othervalue
好的:http://blah.de.blah/my/path/?key=value&otherkey=othervalue
底部不会导致重定向并给我$ _POST!
答案 2 :(得分:6)
转储全局变量以找出页面范围中的内容:
var_dump($GLOBALS);
这将告诉你&#34;什么&#34;和&#34;其中&#34;关于您网页上的数据。
答案 3 :(得分:5)
我也有这个问题。错误发生在htaccess中。如果您有一个影响操作URL的重写规则,您将无法读取POST变量。
要修复此添加,您必须在开始时将此规则添加到htaccess,以避免重写网址:
RewriteRule ^ my_action.php - [PT]
答案 4 :(得分:4)
使用$ _REQUEST:
而不是使用$ _POSTHTML:
<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;
}
答案 5 :(得分:1)
你检查一下你的php.ini吗?
一旦我将post_max_size
与upload_max_filesize
设置为相同,我就破坏了我的帖子方法。
我认为post_max_size
必须小于upload_max_filesize
在RHEL 6.0中使用PHP 5.3.3进行测试
答案 6 :(得分:1)
试试这个
HTML代码
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="firstname">
<input type="submit" name="submit" value="Submit">
</form>
php代码:
if(isset($_POST['Submit'])){
$firstname=isset($_POST['firstname'])?$_post['firstname']:"";
echo $firstname;
}
答案 7 :(得分:0)
您的代码没有任何问题。这里的问题不明显。
检查提交后是否完全调用脚本。
查看提交的内容:var_dump($_REQUEST)
答案 8 :(得分:0)
尝试var_dump($_GLOBALS)
。
可能的原因可能是在您之前运行了一个脚本,它会取消全局变量的设置。如:
unset($_REQUEST);
甚至。
unset($GLOBALS);
这可以通过php.ini配置中的auto_prepend_file选项完成。
答案 9 :(得分:-1)
答案 10 :(得分:-3)
出于测试原因尝试获取
<form action="#?name=test" method="GET">
<input type="text" name="firstname" />
<input type="submit" name="submit" value="Submit" />
</form>
和
if(isset($_GET)){
echo $_GET['name'] . '<br>';
echo $_GET['firstname'];
}