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

Я пытаюсь использовать сеанс для входа в систему и выхода из системы в моем коде, но мой браузер сохраняет передаваемые данные, и я могу получить доступ к странице напрямую, если введу URL-адрес, например, «localhost / P_Display / user / Dashboard /» эта страница непосредственно даже после выхода из системы означает ли это, что сессия не уничтожается полностью?
вот мой код

if($login_data)
{
$user_id = $login_data->id;
$login_data=$this->session->set_userdata(array('user_id'=>$user_id));
// print_r($login_data);
return redirect("user/dashboard/");
}

это та часть, которая проверяет пользователя на логин ..

сейчас для выхода

 public function logout()
{

$this->session->unset_userdata('user_id');
$this->session->sess_destroy();

return redirect('user','refresh');
}

Что я могу сделать, чтобы запретить пользователю доступ к чему-либо после выхода из системы?

0

Решение

Попробуйте с этим в файле представления

<?php

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>

Или в .htaccess

FileETag Нет
Заголовок сброшен ETag
Набор заголовков Cache-Control «max-age = 0, no-cache, no-store, must-revalidate» Набор заголовков Pragma «no-cache» Набор заголовков истекает «Ср, 11 января 1984 05:00:00 GMT»

Или же
В функции __construct контроллера

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

Или в HTML

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

Для большего
визит
Как контролировать кэширование веб-страниц во всех браузерах?

0

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

Я думаю, что вы можете проверить сессию в конструкторе контроллера приборной панели.
И если сессия не установлена, перенаправить пользователя на страницу входа, как …

class Dashboard extends CI_Controller {
public function __construct()
{
if(!isset($this->session->userdata['user_id']))
{
redirect('user','refresh');
}
}
.....
}

Это перенаправит пользователей (должен быть логин) контроллера, если пользователь не вошел в систему.

0

Когда я кодирую часть входа и контролирую доступ, я использую для управления для каждой функции сеанс пользовательских данных. Это означает, что каждая функция начинается с чего-то вроде:

If (!$this->session->userdata('login_type')) {
redirect ('login', 'refresh')
}

Например.

Мне не удалось использовать его в конструкторе или другой.

0

поместите код ниже в функцию __construct всех ваших контроллеров, которые необходимы

$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
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector