view有这个锚:
echo anchor('login', 'Login or Register');
如何将当前网址发送到我的控制器登录?然后在另一个名为login_validation的函数上使用它?
我想要的只是登录并返回到最后一个网址,但无效。所以我想当我点击“登录或注册”然后登录后保存当前网址,在功能login_validation上,我应该重定向到保存的网址...
控制器索引
public function index(){
$this->main_login();
}
main_login
public function main_login(){
$this->load->helper('url');
// on view i will call the next function login_validation
$this->load->view("view_login");
}
login_validation
public function login_validation(){
$this->load->library('form_validation');
(...)
if ($this->form_validation->run()){
// i should redirect the saved url here, instead of home
redirect('home');
}else{
(...)
}
}
我感谢任何帮助
答案 0 :(得分:0)
您只需在控制器类$this->agent->referrer()
中使用main_login()
即可完成此操作。
将引荐来源网址保存到您的会话中,一旦用户通过验证(或,如果),则从会话中提取该字符串:
<_>在main_login()中:// grabs url where you clicked login
$this->session->set_userdata('referrer_url', $this->agent->referrer());
在login_validation()中:
// pull url from session and redirect, make sure to account for not having url too
redirect( $referrer_url );
答案 1 :(得分:0)
我为延迟道歉,我真的很忙于学期结束,
所以我将解释我是如何解决这个问题的,我想要的只是在登录后回到当前页面..所以,每当我打开我的视图登录时,我将保存最后一页的URL,使用以下代码:< / p>
$refering_url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '' ;
然后我应该将它保存在我的会话中,所以我可以从我的控制器访问并将用户重定向到最后一页,但是看,我不能简单地保存每次访问视图登录时的URL,beucase every时间我错过了密码,我将被重定向到登录页面,所以最后的网址,登录而不是最后一个,当然是错误的,所以我们必须在会话中保存它,但仅限于第一个我们访问视图登录的时间,为此,我将上面的变量($ refering_url)与视图登录进行比较并查看登录验证,如果不一样,我可以确认上一页是我登录前的那一页,然后我可以将它保存到我的会话中,
这里是比较,以及我会话中保存的最后一个网址:
if (($refering_url != ‘URL TO VIEW LOGIN‘) &&
($refering_url != ‘URL TO LOGIN VALIDATION){
$this->session->set_userdata('url', $refering_url);
}
登录验证后,在控制器上,我应该将用户重定向到他所在的最后一页(会话中保存的网址),为此我使用了这段代码:
$this->session->set_userdata($data);
$url=$this->session->userdata('url');
redirect($url, 'refresh');