在Codeigniter中重定向

时间:2011-12-01 15:55:56

标签: codeigniter codeigniter-2 codeigniter-url

我有一个分页显示,在每个页面调用中,我将当前的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,而不是存储在会话中的内容。

2 个答案:

答案 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()(我相信)