我已经使用 CodeIgniter 实现了一个基本的登录系统。我正在使用该sessions
库来控制对仅限成员部分的访问。我可以登录并查看该区域没有问题。但是,当我删除我的 cookie 并刷新仅限成员的部分页面时,我仍然可以看到内容。我没有向用户显示登录消息。
我不知道为什么会这样。有任何想法吗?
这是我的 Site.php 控制器
class Site extends CI_Controller{
function _construct(){
parent::_construct();
$this->is_logged_in();
}
function members_area(){
$this->load->view('members_area');
}
function is_logged_in(){
$is_logged_in = $this->session->userdata('is_logged_in');
if(!isset($is_logged_in) || $is_logged_in != true){
echo 'You need to login to access this page. <a href="../login">Login</a>';
die();
}
} }
这是我的 login.php 控制器
class Login extends CI_Controller{
function index(){
$data['main_content'] = 'login_form';
$this->load->view('includes/template', $data);
}
function validate_credentials(){
$this->load->model('membership_model');
$query = $this->membership_model->validate();
if($query){//if credentials validated
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
redirect('site/members_area');
}
else{//If not validated re load login form
$this->index();
}
}
function signup(){
$data['main_content'] = 'signup_form';
$this->load->view('includes/template', $data);
}
function create_member(){
$this->load->library('form_validation');
//field name, error message, validation rules
$this->form_validation->set_rules('first_name', 'Name', 'trim|required');
$this->form_validation->set_rules('last_name', 'Last Name', 'trim|required');
$this->form_validation->set_rules('email_address', 'Email Address', 'trim|required|valid_email');
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[4]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]');
$this->form_validation->set_rules('password2', 'Password Confirmation', 'trim|required|matches[password]');
if($this->form_validation->run() == FALSE){
$this->signup();
}
else{
//create a new row in db
$this->load->model('membership_model');
if($query = $this->membership_model->create_member()){
//Info entered
$data['main_content'] = 'signup_successful';
$this->load->view('includes/template', $data);
}
else{
$this->load->view('signup_form');
}
}
}
}
如果会话不存在,这是应该执行的代码。它在site.php
文件中找到。
if(!isset($is_logged_in) || $is_logged_in != true){
echo 'You need to login to access this page. <a href="../login">Login</a>';
die();
任何帮助深表感谢!