我是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');
}
} ?>
它来到这里,在我的会话建立的模型页面之后
答案 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
}