【发布时间】:2011-08-25 20:40:41
【问题描述】:
我正在 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:根据要求,这是服务器输出的内容:(我隐藏了网址,我未公开)
<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: 我看到 localhost 和远程服务器之间的另一个行为差异:提交表单后刷新(cmd R 或 F5)页面时,在本地主机上,我的浏览器询问我再次发送表格。远程服务器上的同一页面不会从浏览器调用该问题,因此看起来是一些重定向或 url 问题导致了问题?
更新 3: 似乎在远程服务器上,用户被 301 重定向。(永久移动)我仍然不知道这个重定向来自哪里。重定向有效地杀死了 post-data,因此它解释了为什么 post() 返回 false。
那么,有谁知道我为什么会被 301 处理?
更新 4: 通过将我的 base_url 设置为 http://www.url.com 而不是 http://url.com,我在 CodeIgniter 中被重定向
改了之后,问题就解决了! :)
【问题讨论】:
-
$this->input->post() 的定义是什么?
-
@Chris Rasys - 你是什么意思?
-
这无法从您显示的 sn-p 中回答。安装 Xdebug 并逐步检查请求以找出问题所在。附带说明:控制器不应回显。
-
如果你尝试会得到什么:
$this->input->post("username")? -
如果你这样做
var_dump($_POST)会发生什么?有什么吗?另外,您是否使用任何服务器控制面板的“预览”模式?
标签: php forms codeigniter post