php - 由于不需要的 301,$this->input->post() 总是返回 FALSE

标签 php forms codeigniter post

我正在 CodeIgniter 中开发注册页面。 问题是,我的帖子数据没有通过。以下代码总是产生“失败”:

class Signup extends CI_Controller {

    function index()
    {    
        if ($this->input->post())
        {
            echo 'success'; 
        }
        else
        {
            echo 'fail';

            echo form_open('signup');

            echo form_input('username', 'Username');
            echo form_input('email_address', 'Email address');
            echo form_submit('submit', 'Create Acccount');

            echo form_close();
        }
    }

}

可能是什么问题?

更有趣的是,在我的本地主机上,表单工作得很好。失败时是在远程服务器上。


更新 1: 根据要求,这是服务器输出的内容:(我隐藏了 url,我处于保密状态)

<form accept-charset="utf-8" method="post" action="http://www.url.com/signup">
<input type="text" value="Username" name="username">
<input type="text" value="Email address" name="email_address">
<input type="submit" value="Create Account" name="submit">
</form>

更新 2: 我看到本地主机和远程服务器之间的另一个行为差异:提交表单后刷新(cmd R 或 F5)页面时,在本地主机上我的浏览器询问我再次发送表格。远程服务器上的同一页面不会从浏览器调用该问题,因此看起来像是某些重定向或 url 问题导致了问题?


更新 3: 似乎在远程服务器上,用户被 301 重定向。(永久移动)我仍然不知道这个重定向是从哪里来的。重定向有效地杀死了后数据,因此它解释了为什么 post() 返回 false。

那么,有人知道我为什么被 301 吗?


更新 4: 通过将我的 base_url 设置为 http://www.url.com,我在 CodeIgniter 中被重定向了代替 http://url.com

改了之后,问题解决了! :)

最佳答案

问题可能是由来自远程服务器的 301 重定向(位置 HTTP header 指令)引起的。如果您使用 Firefox,您可以使用插件 TamperData 来检查这一点。当然,您也可以只查看 http://www.url.com/signup 在请求页面时是否被重定向。

如果 HTTP header Locationhttp://url.com/signup(没有 www),那么最简单的解决方案是使用 http://url.com/signup 进行表单操作。请注意,如果表单在同一台服务器上,您也可以省略服务器地址。您可以改用 /signup

关于php - 由于不需要的 301,$this->input->post() 总是返回 FALSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6007928/

相关文章:

php - CodeIgniter 中的 JSONP

php - DOM xpath 查找#text 节点并包裹在段落标记中

forms - Symfony 表单 ChoiceType 忽略必需的属性

php - 错误号 : 1452 Cannot add or update a child row: a foreign key constraint fails

jquery - HTML 表单单选按钮可通过 jquery 提交或隐藏

javascript - 如何在使用 vue.js 更改另一个表单字段时有条件地重置表单字段

php - 使用 Codeigniter 将选定的复选框从数组数据传递到数据库

php - 在 SQL 注入(inject)中使用嵌套 SQL 子查询

php - boolean 检查的值为 null 在 "return check"

php - "Like"系统php/mysql