Как я могу отключить обратно, когда пользователь нажал кнопку выхода? Это мой код
function logout(){
session_start();
session_unset();
session_destroy();
redirect(base_url(),'refresh');
}
Но каждый раз, когда я нажимаю назад, появляется страница «Подтверждение повторной отправки формы», а затем, когда я ее перезагружаю, будет отображаться страница перед функцией выхода из системы.
Я бы добавил следующее к контроллерам, к которым я не хочу, чтобы люди получали доступ без входа в систему:
Сразу после имени класса расширяется 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 после того, как человек вошел в систему).
Добавьте это, чтобы предотвратить кеширование предыдущей страницы:
$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');
Redirect уже использует base_url (), поэтому вы должны сделать так
redirect('yourdefaultcontroller', 'refresh');
и проверьте библиотеку сессий, это делает вашу жизнь проще
В контроллере
__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
Вы должны установить имя контроллера по умолчанию.