登录后重定向到原始页面(Codeigniter)
整个网站要求用户在查看页面之前登录。 如果用户未登录,则会将其重定向到登录/注册页面。
问题:如果未登录的用户在http://www.domain.com/listings/1234
这样的url中输入类型,则会显示该页面,但会显示一个黑暗的页面,阻止用户与该页面进行交互(jQuery的东西,这里不是问题),以及一个弹出模式框,其中包含指向(Tank Auth)登录页面http://www.domain.com/login
。
从登录页面登录后,用户将被重定向回登录后获得的常用页面,即: http://www.domain.com
: http://www.domain.com
但该页面传递给变量1234
。
简而言之 :我希望尚未登录且已进入http://www.domain.com/listings/1234
网站的用户尚未重定向到http://www.domain.com/login
,但而是留在http://www.domain.com/listings/1234
并显示一个模式框,其中包含指向登录页面的链接http://www.domain.com/login
,如果他登录,他将被重定向回到http://www.domain.com/
而不是登录后获得的常用页面并传递变量1234
。
如何使用Codeigniter完成这项工作?
这就是我现在拥有的:
清单控制器
function index(listing_id) { $this->load->module('auth'); if(!$this->auth->tank_auth->is_logged_in()) { redirect('login'); } // Some calls to database etc here... $this->load->view('listings', $data); }
有几种方法可以完成您的问题。 希望这个解决方案能够提供一些如何实现这一目标的想法。
下面的解决方案使用jquery ui对话框来显示模态和jquery .ajax来处理登录表单提交。
如果用户未登录,则有条件地将此代码放在标记之前的页面底部。
auth->tank_auth->is_logged_in()){ ?> load->view('login_form'); ?> ?>
您的ajax登录控制器
function login(){ //Use tank auth to validate login information. if(authentication is successful) { $return_data = array( 'status' => true, 'msg' => 'Login Successful' ); }else { $return_data = array( 'status' => false, 'msg' => 'Login failed' ); } //Use echo instead of return when you are sending data back to an jquery ajax function. echo json_encode($data); }
如果你这样做,那么你将不必依赖于codeigniter重定向,一切都将通过ajax处理。
我希望这能让你了解如何处理这个问题。