codeigniter重定向循环的用户会话登录重定向、用户、codeigniter

2023-09-02 01:01:28 作者:爱情没有办法弄虚作假ぅ

我的控制器

class Backspaze extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
        session_start();
        $this->load->library('session');
        $this->load->model('getDB');
        $this->IsLogged();
}

function IsLogged()
    {
        if (!$this->session->userdata('id'))
            {
                 header('Location: '.base_url().'login');
         }

    }


function Login()
{


    $this->load->view('Auth/Login');
}

}

的.htaccess

  RewriteBase /backspaze
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]

我几乎尝试了所有的东西这是在互联网上公布的页面得到重定向循环,同时检查用户登录,请给我一些解决方案

I almost tried all things which is available in internet the page gets redirect loop while checking for user is logged in, please give me some solutions

我的配置 $配置['uri_protocol'] ='自动';

MY Config $config['uri_protocol'] = 'AUTO';

推荐答案

请检查以下几点:

在你的情况,你不应该检查会议构造 水平。 ,手段,你的控制器由公共和放大器;认证 页面。所以这将是循环/重定向这里面 唯一的控制器。

In your case, You should not check the session in constructor level. , Means, your controller consists of public & authenticated pages. So it will be looping/redirecting inside this controller only.

移动会话检查条件的特定页面,并重定向 以登录页面,如果假定没有会话的认证页面。下面 我已经检查了 user_details 页这是我为你创造 了解。

Move the session checking condition to the specific page and redirect to login page if suppose no session for authenticated pages. Below I have checked for user_details page which is I created for your understanding.

在您的登录方法,您应检查已登录与否 如果是的,它应该是去仪表板页。我已创建了一个 方法为 IsAlreadyLogged 。请检查一下。

In your login method, you should check the already logged in or not and if yes, it should be go to dashboard page. I have created one method for that IsAlreadyLogged. please check it.

不要添加在session_start()在你的控制器,它会被取 护理CI核心

Don't add session_start() in your controller which will be take care of CI core

使用内置的重定向方法,这是CI的核心有

Use build-in redirect method which is CI core has

您应该在构造函数级别检查会话,如果所有页面都需要 在控制器进行身份验证。

You should check session in constructor level if all pages are need to be authenticated in controller.

class Backspaze extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->library('session');
        $this->load->model('getDB');
    }

    function IsLogged()
    {
        if (!$this->session->userdata('id'))
        {
            redirect('login');
        }
    }

    function IsAlreadyLogged()
    {
        if ($this->session->userdata('id'))
        {
            redirect('dashboard');
        }
    }

    function user_details()
    {
        $this->IsLogged();
        $this->load->view('user/details');
    }


    function Login()
    {
        $this->IsAlreadyLogged();
        $this->load->view('Auth/Login');
    }

}