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!
Fra*_*ine 18
你能做的一件事:
[可选]尝试同时包含'name'和'id'属性,例如
<input type="text" name="firstname" id="firstname">
Run Code Online (Sandbox Code Playgroud)
如果您在Linux环境中,请检查您是否具有该文件的读/写权限.
此外,此链接也可能有所帮助.
编辑:
你也可以if(isset($_POST['submit'])){
用这个代替
:
if($_SERVER['REQUEST_METHOD'] == "POST"){ .这始终是检查表单是否已提交的最佳方式
小智 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)
这将告诉您关于页面上数据的"内容"和"位置".
我也有这个问题.错误发生在htaccess中.如果您有一个影响操作URL的重写规则,您将无法读取POST变量.
要修复此添加,您必须在开始时将此规则添加到htaccess,以避免重写URL:
RewriteRule ^ my_action.php - [PT]