重定向至 codeigniter 中的 referer url

2022-08-30 22:34:23

在我项目的消息传递系统中,当您收到来自用户的消息时,您会收到一封电子邮件警报,说另一个用户已发送消息以查看消息,请单击此处(即消息的URL),因此,如果用户未登录到系统,他将被重定向到登录页面,登录后应返回到引用url。我已经在核心文件夹中制作了一个基本标识符,并扩展了CI_controller身份验证代码如下。

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;
            }
        }
    }

引用url是“http://example.com/project/pm/view_conversation?id=11”,现在的问题是我得到引用url直到view_conversation,并且无法获得id部分。

有什么建议吗?

谢谢。


答案 1

这可以帮助:

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

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

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

$this->load->library('user_agent');
if ($this->agent->is_referral())
{
    echo $this->agent->referrer();
}

更新:有关如何使用相同的user_agent库
获取引荐来源网址信息的有趣且有用的信息 https://www.tutorialandexample.com/user-agent-class/


答案 2

怎么样只是

redirect($_SERVER['HTTP_REFERER']);

使用 php 的 $_SERVER 全局变量。

这对我有用!


推荐