PHP $ _POST无法正常工作?

时间:2012-01-25 12:06:07

标签: php html forms post

我有最简单的形式,我想做的就是回复文本框中写的任何内容。

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;
}

问题是它无法在我的服务器上运行(它可以在另一台服务器上运行)。有没有人知道什么可能是错的?服务器上还有其他形式,工作正常。

11 个答案:

答案 0 :(得分:18)

你可以做的一件事:

  1. 确保表单上的“操作”属性指向正确的目的地。
  2. 尝试使用$ _REQUEST []而不是$ _POST,看看是否有任何更改。
  3. [可选]尝试同时包含“名称”和“ID”属性,例如

    <input type="text" name="firstname" id="firstname">
    

  4. 如果您在Linux环境中,请检查您是否对该文件具有读/写权限。

  5. 此外,此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:

而不是使用$ _POST

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;
}

答案 5 :(得分:1)

你检查一下你的php.ini吗? 一旦我将post_max_sizeupload_max_filesize设置为相同,我就破坏了我的帖子方法。

我认为post_max_size必须小于upload_max_filesize 在RHEL 6.0中使用PHP 5.3.3进行测试

供参考:
$_POST in php 5.3.5 does not work
PHP POST not working

答案 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)

您的代码没有任何问题。这里的问题不明显。

  1. 检查提交后是否完全调用脚本。

  2. 查看提交的内容:var_dump($_REQUEST)

答案 8 :(得分:0)

尝试var_dump($_GLOBALS)

可能的原因可能是在您之前运行了一个脚本,它会取消全局变量的设置。如:

unset($_REQUEST);

甚至。

unset($GLOBALS);

这可以通过php.ini配置中的auto_prepend_file选项完成。

答案 9 :(得分:-1)

  1. html文件和php文件都应该驻留在c:\ apache2中的htdocs文件夹中(如果使用apache web服务器)。
  2. 输入http://“localhost / html_file_name.html”
  3. 打开html文件
  4. 现在在字段中输入您的数据..您的代码将运行..

答案 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'];
}