我有一个简单的注册表格。我一直在寻找几个小时并且尝试了所有的东西 - 基本上我已经将它剥离下来发布/获取。当我将方法设置为get(在表单和脚本页面上)时它工作正常,当我将其设置为post时,我收到此错误:
不可接受
在此服务器上找不到所请求资源/tmp/register.php的适当表示。 此外,尝试使用ErrorDocument处理请求时遇到404 Not Found错误。
以下是表单页面上的代码:
<form id="registration" onsubmit="return validateRegistration();" action="register.php" method="post">
Name: <input type="text" id="name" name="name" placeholder="Required">
<br>
Email: <input type="email" id="email" name="email" placeholder="Required">
<br>
Confirm: <input type="email" id="confirm_email" autocomplete="off" placeholder="Required">
<br>
Password: <input type="password" id="password" name="password" placeholder="Required">
<br>
Confirm: <input type="password" id="confirm_password" autocomplete="off" placeholder="Required">
<br>
City: <input type="text" id="city" name="city" placeholder="Optional">
<br>
Country: <input type="text" id="country" name="country" placeholder="Optional">
<br>
<br>
<hr>
<a href="#">Terms and Conditions</a>
<br>
<input type="submit" value="Accept and Complete Registration">
</form>
在我的脚本页面(register.php)上,我有:
<?php
echo "Name: " . $_POST["name"] . "<br>";
echo "Email: " . $_POST["email"] . "<br>";
echo "Password: " . $_POST["password"] . "<br>";
echo "Location: " . $_POST["city"] . ", " . $_POST["country"] . "<br>";
?>
如果我只是转到register.php
,它只会显示帖子所在的空白,但如果我提交表单,则会显示不可接受的406错误。
有人可以帮我这个吗?我完全被困惑了。感谢
答案 0 :(得分:3)
我不知道你是否找到了问题的答案。我也遇到了这个问题,POST将完全没有数据返回,但GET流动没有错误。
关于我的问题的一个奇怪的部分是我只在我的一个网站上拥有它。所有站点都在同一台服务器上。
经过大约3个小时的隆重轰击我的脸,我已经意识到了。一个不起作用的网站我已将URL编码设置为始终删除“www”。我的解决方案是强制URL始终添加“www”,问题就消失了。
答案 1 :(得分:1)
还有另一种可能性尚未提及,即.htaccess
在某些情况下,.htaccess
设置为重定向或阻止POST,这不会捕获并阻止或路由GET。
如果您可以导航到该页面(您说你可以),但是POST永远不会到达那里,那么就会阻止它,唯一的方法就是您正在使用的Web服务器平台。
您之前提到您正在使用托管服务提供商,因此请具体询问他们在POST请求中设置了哪些规则(您可能需要等待一段时间才能找到能够真正回答问题的人)或者您可以使用wget
wget --post-data 'name=test' http://server.com/tmp/register.php
答案 2 :(得分:0)
错误代码显示它正在/tmp/register.php
查找文件。那是对的吗?也许将表单操作更改为/register.php
?
另外,你的PHP看起来有些偏差(很多额外的引号),但我假设你只是从php文件中复制/粘贴,并且某些原因删除了周围的HTML?
答案 3 :(得分:0)
我在表单中的多个textarea字段上使用ckeditor,并得到相同的错误......
我尝试了所有的东西......比如使用get而不是post,玩mod证券以及我能想到的更多东西.......
但是当我从多个领域中移除ckeditor时,我终于得到了它...现在它的工作非常好......
可能是代码中的某些字段正在生成一些内部代码,浏览器/服务器将其视为sql查询的注入,因此会直接阻止页面。
找到代码......答案 4 :(得分:-1)
按$HTTP_RAW_POST_DATA
而不是$_POST
获取发布数据。希望这会有所帮助。