PHP形式 ​​- '得到'工作,但'发布'没有

时间:2012-03-17 19:07:22

标签: php forms post get

我有一个简单的注册表格。我一直在寻找几个小时并且尝试了所有的东西 - 基本上我已经将它剥离下来发布/获取。当我将方法设置为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错误。

有人可以帮我这个吗?我完全被困惑了。感谢

5 个答案:

答案 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获取发布数据。希望这会有所帮助。