首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重定向至codeigniter中的referer url

重定向至codeigniter中的referer url
EN

Stack Overflow用户
提问于 2012-07-07 19:52:01
回答 5查看 72.1K关注 0票数 15

在我的项目的消息系统中,当你收到一个用户的消息时,你会收到一个电子邮件警告,说另一个用户已经发送了一条消息来查看消息,点击这里(即消息的网址),所以如果用户没有登录到系统,他会被重定向到登录页面,登录后,它应该会回到推荐人的网址。我已经在核心文件夹中做了一个basecontoller,并扩展了CI_controller,认证代码如下。

代码语言:javascript
复制
function authenticate($type = 'user')
    {
        if($type == 'user')
        {
            if($this->user_id)
            {
                // user is logged in. check for permissions now
            }
            else
            {
                // user isnt logged in. store the referrer URL in a var.
                if(isset($_SERVER['HTTP_REFERER']))
                {
                    $redirect_to = str_replace(base_url(),'',$_SERVER['HTTP_REFERER']);
                }
                else
                {
                    $redirect_to = $this->uri->uri_string();
                }            

                redirect('user/login?redirect='.$redirect_to);
                exit;
            }
        }

        if($type == 'admin')
        {
            if($this->session->userdata('admin_id') && $this->session->userdata('user_type') ==5)
            {
                // Admin is logged in
            }
            else
            {
                redirect('admin/login');
                exit;
            }
        }
    }

推荐人的网址是"http://example.com/project/pm/view_conversation?id=11“,现在的问题是,我得到的推荐人的网址,直到view_conversation,并不能获得的id部分。

有什么建议吗?

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-14 02:15:53

这可能会有所帮助:

CI 2+ https://www.codeigniter.com/userguide2/libraries/user_agent.html

CI 3+ http://www.codeigniter.com/userguide3/libraries/user_agent.html

以下解决方案适用于Codeigniter版本3

代码语言:javascript
复制
$this->load->library('user_agent');
if ($this->agent->is_referral())
{
    echo $this->agent->referrer();
}

更新:关于如何使用相同的user_agent库获取推荐人信息的有趣且有用的信息

https://www.tutorialandexample.com/user-agent-class/

票数 40
EN

Stack Overflow用户

发布于 2014-04-10 19:40:33

不如就这样

代码语言:javascript
复制
redirect($_SERVER['HTTP_REFERER']);

使用php的$_SERVER全局变量。

这对我很有效!

票数 19
EN

Stack Overflow用户

发布于 2017-07-12 22:21:35

将该代码放入您的登录控件

代码语言:javascript
复制
function index() {
    $this->load->library('user_agent');  // load user agent library

    //Set session for the referrer url
    $this->session->set_userdata('referrer_url', $this->agent->referrer() );  
}

登录重定向代码后的

代码语言:javascript
复制
// user is authenticated if referrer is there
if( $this->session->userdata('referrer_url') ) {
    //Store in a variable so that can unset the session
    $redirect_back = $this->session->userdata('referrer_url');
    $this->session->unset_userdata('referrer_url');
    redirect( $redirect_back );
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11374759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档