2011-12-01 104 views
3

我有一个分页显示,其中在每个页面调用中,我将当前URI字符串设置为一个会话(在我的控制器中)。Codeigniter中的重定向

$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

任何和所有帮助赞赏

UPDATE: 我的问题是不是由于相对/绝对地址,对于第二个控制器中的一些奇怪的原因,重定向的目标是favicon.ico,而不是存储在会话中的内容。

+1

也许'$ back_to = site_url()。$ this-> session-> userdata('return_to');'? – stealthyninja

+0

H同样的问题,它已经几个小时:(你找到任何解决方案? – YahyaE

+0

在这里找到答案:http://stackoverflow.com/questions/20300311/codeigniter-weird-parameter-favicon-ico – mrbm

回答

0

我会使用绝对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()(我相信)

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的会话饼干,所以浏览器就可以拥有它的作用在这里。