2016-05-18 2 views
1

Я изучаю codeigniter. После входа пользователя в систему, когда он нажимает кнопку выхода из системы, он возвращается на страницу входа в систему, но если он нажимает кнопку браузера, он снова возвращается к странице подключения. Таким образом, сеанс хранится в браузере. Как перенаправить на страницу входа.выйдите из страницы с кодомigniter

код

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
class User extends CI_Controller{ 
public function __construct() 
{ 
    parent::__construct(); 

    $this->load->model('user_model'); 

} 
public function index() 
{ 

    if($this->session->userdata('logged_in')) 
    { 
     $session_data = $this->session->userdata('logged_in'); 
     $data['nom'] = $session_data['nom']; 
     redirect('user/connection_Ok'); 
    } 
    else 
    { 
     //If no session, redirect to login page 
     $this->login; 

    } 

} 
public function logout() 
{ 
    $this->session->unset_userdata('logged_in'); 
    // session_destroy(); 
    $this->session->sess_destroy(); 
redirect('login'); 

} 
+0

спасибо за ваш ответ, я бы снова вернулся на страницу входа в систему, если пользователь нажимает кнопку браузера сразу после выхода из системы. Это – baptpro

+0

Обратите внимание, что я перевел мои предыдущие комментарии в ответ. – Sparky

ответ

0

, когда он нажимает на кнопку Выйти он переходит обратно на страницу входа в систему, но если он нажимает на кнопку браузера назад, он возвращается на страницу подключения снова. Таким образом, сеанс хранится в браузере.

Я думаю, что есть некоторая путаница здесь ... если он нажимает «выйти», ваш контроллер logout уничтожает сеанс, период. Использование кнопки «Назад» браузера не может отменить это действие или восстановить его сеанс.

Другими словами, только потому, что кэшированная страница «выглядит», он все еще вошел в систему, не означает, что он все еще вошел в систему. Как только он пытается получить доступ к ограниченному контенту, он не будет авторизирован с момента его предыдущего сеанса был уже уничтожен.

Как перенаправить на страницу входа вместо этого.

Вы не можете запретить пользователям нажимать кнопку «Назад» браузера и не можете легко контролировать, что происходит, когда они это делают. Браузер просто загружает кешированную версию предыдущей страницы, не перезагружая ее ... именно так работают браузеры.

JavaScript предоставит вам доступ к таким вещам, как история браузера, но нет абсолютно надежного метода перехвата кнопки «Назад». Независимо от того, как comprehensive or complex the solution, пользователь может просто отключить JavaScript и победить его.

Однако, если вы программируете надежную систему авторизации, пользователь автоматически будет доставлен в Логин страницу в любое время они пытаются получить доступ к защищенному содержимому без входа в


FYI -. Для CodeIgniter, я рекомендую вы используете проверенную систему авторизации, поэтому вам не нужно изобретать велосипед или беспокоиться о безопасности. Мне нравится Ben Edmund's Ion Auth, но есть еще несколько решений для CodeIgniter ... просто сделайте свое исследование.

+0

Это не значит, что я хочу, чтобы пользователь не нажимал кнопку браузера, но когда он это делает, он должен перенаправить на страницу, потому что он просто вышел из системы – baptpro

+0

@baptpro, как я уже сказал, * «и вы не можете легко контролировать, что происходит когда они это делают »* - это потому, что кнопка« Назад »загружает кешированную версию страницы и ничего не перезагружает. – Sparky

+0

ОК, как ученик ци, я собираюсь узнать больше. Примером моего дела является facebook. После того, как я выйду на facebook, и я нажму кнопку браузера назад, я снова перенаправлен на страницу входа в систему, поэтому моя страница подключения может быть достигнута только после входа в систему. Надеюсь, вы видите, что я имею в виду! – baptpro

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