我有一个分页显示,在每个页面调用中,我将当前的URI字符串设置为一个会话(在我的控制器中)。
$current = $this->uri->uri_string();
$this->session->set_userdata('return_to', $current);
从视图中,用户可以单击链接转到其他位置(编辑表单),在提交时(表单验证正确)我想返回到分页结果的正确页面。
if($this->form_validation->run('edit') == TRUE )
{
$back_to = NULL;
$back_to = '/'.$this->session->userdata('return_to');
....
redirect($back_to);
}
有时在Firefox中工作但在Chrome中死机,重定向到favicon.ico
任何和所有帮助赞赏
更新 我的问题不是由于相对/绝对地址,由于某些奇怪的原因,在第二个控制器中重定向的目标是favicon.ico,而不是存储在会话中的内容。
答案 0 :(得分:1)
if($this->form_validation->run() == TRUE )
{
if($this->session->userdata('return_to')
{
redirect($this->session->userdata('return_to'));
}
else
{
redirect(base_url());
// or trigger some error
}
}
不需要分配变量,redirect()
同时使用完整网址和分段网址(非常类似于site_url(),这正是uri_string()
返回的内容。
因此,如果这不起作用,则可能是您的会话未设置或已过期。另外,请考虑CI的会话是 cookies ,因此浏览器可以在此处发挥作用。
答案 1 :(得分:0)
我会使用绝对网址,而不是相对网址。
试试这个
if($this->form_validation->run('edit') == TRUE )
{
$back_to = NULL;
$back_to = 'http://www.mydomain.com/'.$this->session->userdata('return_to');
....
redirect($back_to);
}
正如stealthyninja指出的那样,最好使用CodeIgniter的site_url()或base_url()而不是硬编码。在config.php中设置site_url()(我相信)