2013-02-20 1 views
1

Я использовал базовую систему входа с помощью CodeIgniter. Я использую библиотеку sessions для управления доступом к разделу только для членов. Я могу войти и посмотреть эту область без проблем. Однако, когда я удаляю свои файлы cookie и обновляю только страницу раздела только членов, я все еще вижу содержимое. Я не показываю пользователю сообщение для входа.Cookie не работает с системой входа в систему CodeIgniter

Я не знаю, почему это происходит. Есть идеи?

Это мой контроллер 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(); 

Любая помощь очень ценится!

+0

Что именно вы имеете в виду, когда вы говорите, что вы удалите куки? Я имею в виду, как вы это делаете. – Rooster

+0

Извините, мне следовало быть яснее. при входе в систему я создаю сеанс. Затем в браузере Chrome я открываю настройки и перемещаюсь к куки-файлам и просто удаляю их оттуда, прежде чем обновлять страницу. – Javacadabra

ответ

1

Похоже, что ваш конструктор не называется.

Возможно, это потому, что нужны два подчеркивания, а не 1 :)

function __construct(){ 
    parent::__construct(); 
    $this->is_logged_in(); 
} 
+0

Пятно на помощнике! Большое спасибо за помощь – Javacadabra

Смежные вопросы