如何限制用户在codeigniter中转到登录页面

时间:2016-10-21 07:44:46

标签: session codeigniter-3

我是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,但我不知道如何在ci中实现/检查它。 任何人都可以帮助我更新您的代码。

我的登录控制器如下:

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

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

它来到这里,在我的会话建立的模型页面之后

3 个答案:

答案 0 :(得分:3)

你可以检查这样的用户会话

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
}

答案 1 :(得分:2)

请使用以下代码

$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变量值为true

以下控制器代码:

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

   }

 }

此代码可以帮助您

答案 2 :(得分:0)

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
}