pep*_*epe 1 php login codeigniter returnurl tankauth
这里的问题是当我的用户登录我的应用程序时,它们总是被重定向到默认控制器.
我想在登录前将用户重定向到他们所在的页面.
因此,例如,如果用户正在阅读论坛帖子#12(阅读不需要登录)然后决定发布答案(回答需要登录),一旦他们登录,他们应该回到帖子#12.
我正在使用PHP/Codeigniter 2.0.2和Tank_Auth库,并且在我的几个控制器中都有
function __construct()
{
parent::__construct();
if (!$this->tank_auth->is_logged_in()) {
redirect('/auth/login/');
} else {
//load stuff
}
Run Code Online (Sandbox Code Playgroud)
我的问题是
设置返回URL的最佳方法是什么(Cookie?GET?),以及如何实现?
如果您熟悉Tank_Auth,我应该在哪些文件中进行这些更改?
即使您不使用Tank_Auth,也欢迎使用任何路线图.
小智 8
我最近在我工作的网页上实现了这个解决方案.
在controller/auth文件中添加对user_agent库的引用:
function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->load->library('security');
$this->load->library('tank_auth');
$this->lang->load('tank_auth');
$this->load->library('user_agent'); //This is the line you are adding
}
Run Code Online (Sandbox Code Playgroud)
在views/auth/login_form.php中,利用CodeIgniter的user_agent库添加一个隐藏的输入标记,该标记将包含引用URL,如下所示:
<?=form_hidden('redirect_url', $this->agent->referrer());?>
<?php echo form_submit('submit', 'Let me in'); ?>
<?php echo form_close(); ?>
Run Code Online (Sandbox Code Playgroud)
之后,当用户将登录数据发布到登录操作时,您所要做的就是将用户重定向到名为"redirect_url"的输入内容:
/**
* Login user on the site
*
* @return void
*/
function login()
{
/*.... Beginning of the login action function...
....
....
*/
if ($this->tank_auth->login(
$this->form_validation->set_value('login'),
$this->form_validation->set_value('password'),
$this->form_validation->set_value('remember'),
$data['login_by_username'],$data['login_by_email'])) //valid
{
redirect( $this->input->post('redirect_url'));
}
}
Run Code Online (Sandbox Code Playgroud)
这对我很有用......它很简单.我相信它可以帮到你.
让我知道任何事情.
| 归档时间: |
|
| 查看次数: |
4604 次 |
| 最近记录: |