Tôi là một newbie trong codeigniter. Tôi đang sử dụng biểu mẫu đăng nhập để đăng nhập với tư cách quản trị viên. Khi người quản trị đăng nhập với tên người dùng và mật khẩu chính xác, anh ta được chuyển đến trang chủ với biến phiên. Sau đó, nếu anh ta nhấp vào nút đăng xuất thì phiên đó được cho là bị hủy và chuyển hướng người dùng đến trang đăng nhập tức là đăng nhập vào trang biểu mẫu.codeigniter sess_destroy() không hoạt động đúng, tôi đang làm gì sai?
Bộ điều khiển 1 là admin:
<?php
class Admin extends CI_Controller
{
function index()
{
$data['main_content'] = 'admin/log_in';
$this -> load -> view('includes/admin/admin_template', $data);
}
function log_in()
{
$this->load->model('admin_model');
$query = $this -> admin_model -> validate();
if ($query)// if the user's credentials validated...
{
$data = array('user_name' => $this -> input -> post('user_name'), 'is_logged_in' => true);
$this -> session -> set_userdata($data);
redirect('admin/home/admin_home');
} else// incorrect username or password
{
$this -> index();
}
}
function log_out()
{
$this->session->sess_destroy();
redirect('/admin/admin','refresh');
}
}
Bộ điều khiển thứ hai là bộ điều khiển nhà:
<?php
class Home extends CI_Controller
{
function __construct()
{
parent:: __construct();
$this->is_logged_in();
}
function is_logged_in()
{
$is_logged_in = $this -> session -> userdata('is_logged_in');
if (!isset($is_logged_in) || $is_logged_in != true)
{
$this -> load -> view('admin/forbidden');
}
}
function admin_home()
{
$data['main_content'] = 'home_view';
$this->load->view('admin/home_view');
}
}
mô hình
là admin_model:<?php
class Admin_model extends CI_Model
{
function __construct()
{
parent:: __construct();
}
function validate()
{
$this->db->where('user_name',$this->input->post('user_name'));
$this->db->where('password', $this->input->post('password'));
$query = $this->db->get('user');
if($query->num_rows==1)
{
return true;
}
}
}
Bây giờ, nó coi người dùng để đăng xuất và hủy phiên, nhưng nếu tôi nhấp vào nút quay lại của trình duyệt, tôi có thể lấy lại trang whi ch được cho là không được và phiên không bị phá hủy. hãy cho tôi biết tôi đang làm gì sai ở đây. Tôi đang sử dụng codeigniter 2.1.0.
Sau khi nhấn nút quay lại, bạn có đang truy xuất một trang từ bộ nhớ cache không? Hoặc nếu bạn nhấn 'F5' thì trang có tải lại và hiển thị bạn đã đăng nhập không? – Jakub
có, ngay cả sau khi tải lại nó cho thấy tôi đăng nhập – Shabib
nếu bạn kéo lên một trang 'an toàn' trong một trình duyệt khác (không có dữ liệu phiên) nào bạn nhận được trong là tốt? – Jakub