【问题标题】:Redirect in Codeigniter在 Codeigniter 中重定向
【发布时间】:2011-12-01 15:55:56
【问题描述】:

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

【问题讨论】:

  • 或许$back_to = site_url() . $this->session->userdata('return_to');?
  • 遇到同样的问题已经好几个小时了:(你找到解决办法了吗?

标签: codeigniter codeigniter-2 codeigniter-url


【解决方案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() 使用完整 url 和分段 url(很像 site_url(),这正是 uri_string() 返回的内容。

因此,如果这不起作用,很可能是您的会话未设置或已过期。另外,考虑到 CI 的会话是 cookies ,所以浏览器可以在这里发挥作用。

【讨论】:

    【解决方案2】:

    我会使用绝对 URL 而不是相对 URL。

    试试这个

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-21
      • 2013-04-30
      • 1970-01-01
      • 2023-03-18
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      相关资源
      最近更新 更多