PHP $ _POST无法正常工作?

pti*_*nca 8 html php forms post

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

HTML:

<form action="" method="post">
  <input type="text" name="firstname">
  <input type="submit" name="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)

PHP:

if(isset($_POST['submit'])){
  $test = $_POST['firstname'];
  echo $test;
}
Run Code Online (Sandbox Code Playgroud)

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

geo*_*sic 19

今天晚上我有类似的东西让我感到沮丧.提交表单给了我$ _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!

  • 你的回答为我节省了很多时间.在我的情况下,我的表单有`action ="mysite.com/somefolder`并导致`$ _POST`为空.但是当我将动作更改为`mysite.com/somefolder /`时,它按预期工作.谢谢很多 (3认同)
  • 我有一个带有 `action="booking.php"` 的表单,但它不起作用。原来这是因为我的 .htaccess 重写了 .php 地址以删除扩展名。改变 `action="booking"` 成功了 (2认同)

Fra*_*ine 18

你能做的一件事:

  1. 确保表单上的"action"属性指向正确的目标.
  2. 尝试使用$ _REQUEST []而不是$ _POST,看看是否有任何变化.
  3. [可选]尝试同时包含'name'和'id'属性,例如

    <input type="text" name="firstname" id="firstname">
    
    Run Code Online (Sandbox Code Playgroud)

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

此外,此链接也可能有所帮助.

编辑:

你也可以if(isset($_POST['submit'])){ 用这个代替 : if($_SERVER['REQUEST_METHOD'] == "POST"){ .这始终是检查表单是否已提交的最佳方式

  • 你不需要id. (8认同)

小智 7

使用 $_REQUEST 代替 $_POST:

HTML:

<form action="" method="post">
  <input type="text" name="firstname">
  <input type="submit" name="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)

PHP:

if(isset($_REQUEST['submit'])){
  $test = $_REQUEST['firstname'];
  echo $test;
}
Run Code Online (Sandbox Code Playgroud)


小智 6

转储全局变量以找出页面范围中的内容:

var_dump($GLOBALS);
Run Code Online (Sandbox Code Playgroud)

这将告诉您关于页面上数据的"内容"和"位置".


Ang*_*cio 5

我也有这个问题.错误发生在htaccess中.如果您有一个影响操作URL的重写规则,您将无法读取POST变量.

要修复此添加,您必须在开始时将此规则添加到htaccess,以避免重写URL:

RewriteRule ^ my_action.php - [PT]