Я использовал сеанс в своем коде. когда я пытался выйти из системы, он работает. но когда я вернусь назад, программа все равно сможет снова вернуться к странице администратора. Я не знаю, почему. я думаю, что он был разрушен. при обновлении страницы администратора сеанс работает. программа вернется на домашнюю страницу. Дело в том, что я должен сначала обновиться, чтобы завершить сеанс.Уничтожить сеанс codeigniter
это мой код.
контроллер для входа в систему:
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class Home extends CI_Controller{
\t function __construct()
{
parent::__construct();
$this->load->model('model_user'); //memasukkan file model m_login.php ke dalam controller
}
function index()
{
$session = $this->session->userdata('isLogin'); //mengabil dari session apakah sudah login atau belum
if($session == FALSE) //jika session false maka akan menampilkan halaman login
{
$this->load->view('home/index_home');
}else //jika session true maka di redirect ke halaman dashboard
{
redirect('dashboard/index');
}
}
\t
function do_login()
{
$username = $this->input->post("uname");
$password = $this->input->post("pass");
$cek = $this->model_user->cek_user($username,md5($password)); //melakukan persamaan data dengan database
if(count($cek) == 1){ //cek data berdasarkan username & pass
foreach ($cek as $cek) {
$level = $cek['level']; //mengambil data(level/hak akses) dari database
}
$this->session->set_userdata(array(
'isLogin' => TRUE, //set data telah login
'uname' \t => $username, //set session username
'lvl' \t => $level, //set session hak akses
));
redirect('dashboard/index','refresh'); //redirect ke halaman dashboard
}else{ //jika data tidak ada yng sama dengan database
echo "<script>alert('Gagal Login!')</script>";
redirect('home','refresh');
}
}
}
контроллер для приборной панели:
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class Dashboard extends CI_Controller{
\t public function __construct(){
\t \t parent::__construct();
\t \t $this->auth->cek_auth();
\t \t
\t }
\t
\t public function ceklogin(){
\t \t $session = $this->session->userdata('isLogin');
\t if($session == FALSE)
\t {
\t \t $this->load->view('home/index_home');
\t }
\t }
\t
\t public function index()
\t {
\t \t $this->ceklogin();
\t \t
\t \t $stat = $this->session->userdata('lvl');
\t \t
\t \t if($stat=='admin'){
\t \t \t $this->load->view('admin/home/index_admin',$data);
\t \t }else{
\t \t \t $this->load->view('member/home/index_member',$data);
\t \t }
\t \t
\t }
public function logout()
\t {
\t \t $this->session->sess_destroy();
\t \t
\t \t redirect('home','refresh');
\t }
}
Срок авторизации в ВОЛП дер библиотеки:
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class Auth {
public function cek_auth()
\t {
\t \t $this->ci =& get_instance();
\t \t $this->sesi = $this->ci->session->userdata('isLogin');
\t \t $this->hak = $this->ci->session->userdata('stat');
\t \t if($this->sesi != TRUE){
\t \t \t redirect('home','refresh');
\t \t \t exit();
\t \t }
\t \t
\t }
\t public function hak_akses($kecuali="")
\t { \t
\t if($this->hak==$kecuali){
\t \t echo "<script>alert('Anda tidak berhak mengakses halaman ini!');</script>";
\t \t redirect('dashboard/index');
\t }elseif ($this->hak=="") {
\t \t echo "<script>alert('Anda belum login!');</script>";
\t \t redirect('home');
\t }else{
\t }
\t }
}
Что вы получаете, когда u var_dump ($ this-> sesi) cek_auth? –
какая версия Codeigniter вы используете? –
codeigniter 2.1.2 –