如何限制用户进入codeigniter中的登录页面

How to restrict users to go to login page in codeigniter

我是 php 和 codeigniter 的新手。我不知道如何限制用户在成功登录过程后返回登录页面一次。我也创建了会话。 我的会话是按以下方式在模型中创建的

$newdata = array(
                'id' => $query['entity_id'],
                'name' => $query['entity_name'],
                'uname' => $query['entity_uname']);
                $this->session->set_userdata($newdata);     }

我在 ci 中听说过 is_logged_in,但我不知道如何 implement/check 在 ci 中使用它。 任何人都可以帮助我更新代码。

我的登录控制器如下:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Login extends MY_Controller {
public function index()
{
$this->load->view('dashboard');
}
} ?>

它出现在我的会话建立后的模型页面之后

public function login()
{
    // before rest of code here, check for existing session
    if ($this->session->has_userdata('id') && (int)$this->session->userdata('id') > 0) {
        // means user is logged in, redirect them to some logged in page in that case
        redirect('profile', 'refresh');
    }

    // here you write login method logic and check for credentials
}

您可以像这样检查用户会话

if($this->session->userdata('id')){
        redirect('profile', 'refresh');
}else{
    // load your login page
}

或在成功登录后为您的会话添加新密钥

$this->session->set_userdata('logged_in',true);

然后像这样检查

if($this->session->userdata('logged_in') == true){
      redirect('profile', 'refresh');
}else{
     // load your login page
}

请使用以下代码

$newdata = array(
            'id' => $query['entity_id'],
            'name' => $query['entity_name'],
            'uname' => $query['entity_uname']
            );
$this->session->set_userdata($newdata);                
$this->session->set_userdata('is_logged_in','true');

现在您的会话 is_logged_in 变量值为真

控制器代码如下:

class Login extends MY_Controller {
    public function __construct() {
    parent::__construct();  
    if($this->session->userdata('is_logged_in') == true){
       redirect('home');
    }
   else{
       redirect('login');
       }

   }

 }

此代码会对您有所帮助