CodeIgniter session_destroy () выход из системы

Как я могу отключить обратно, когда пользователь нажал кнопку выхода? Это мой код

function logout(){
session_start();
session_unset();
session_destroy();
redirect(base_url(),'refresh');
}

Но каждый раз, когда я нажимаю назад, появляется страница «Подтверждение повторной отправки формы», а затем, когда я ее перезагружаю, будет отображаться страница перед функцией выхода из системы.

0

Решение

Я бы добавил следующее к контроллерам, к которым я не хочу, чтобы люди получали доступ без входа в систему:

Сразу после имени класса расширяется CI_Controller {

public function __construct(){
parent::__construct();

if ( ! $this->session->userdata('logged_in'))
{
$allowed = array(
// All allowed function names for not logged in users ( i keep it empty usually)
);
if ( ! in_array($this->router->fetch_method(), $allowed))
{
redirect(site_url('login/index'));
}
}
}

Таким образом, в основном это происходит до того, как к контроллеру обращаются к какой-либо функции, он проверяет, вошел ли пользователь в систему и будет ли он / она перенаправлен на страницу входа. (Часть userdata ‘logged_in’ — это то, что я устанавливаю как userdata после того, как человек вошел в систему).

1

Другие решения

Добавьте это, чтобы предотвратить кеширование предыдущей страницы:

$this->output->set_header('Last-Modified:'.gmdate('D, d M Y H:i:s').'GMT');
$this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate');
$this->output->set_header('Cache-Control: post-check=0, pre-check=0',false);
$this->output->set_header('Pragma: no-cache');
0

Redirect уже использует base_url (), поэтому вы должны сделать так

redirect('yourdefaultcontroller', 'refresh');

и проверьте библиотеку сессий, это делает вашу жизнь проще

https://codeigniter.com/user_guide/libraries/sessions.html

0

В контроллере

__construct метод добавить эти

function __construct()
{
parent::__construct();
ob_start(); # add this
$this->load->library('Session'); # add this
}

И в вашем методе

function logout(){
$this->load->driver('cache'); # add
$this->session->sess_destroy(); # Change
$this->cache->clean();  # add
redirect('home'); # Your default controller name
ob_clean(); # add
}

В redirect Вы должны установить имя контроллера по умолчанию.

Уничтожение сессии

0
По вопросам рекламы [email protected]