Я работаю над проект php в codeigniter. Когда пользователь выходит из системы, он / она направляется на страницу входа. Но когда он / она нажимает кнопку «Назад» браузера, он / она видит домашнюю страницу прямо перед выходом из системы, что, безусловно, не очень хорошо.
Я добавил проверку сеанса на каждой странице, чтобы, когда пользователь перезагружал любую страницу после выхода из системы, он / она направлялся на страницу входа.
Насколько я думаю, это происходит из-за того, что веб-браузер использует кеш для кнопки «назад». Так что одно из решений, которое было дано на многих форумах по переполнению стека и других, — очистить кеш, что я тоже сделал. Но возникла еще одна проблема: у кнопки истекает срок действия документа, что плохо с точки зрения UX.
Другое решение состоит в том, чтобы добавить код javascript, чтобы ограничить страницу при нажатии кнопки назад, что, безусловно, работает. Но так как Javascript на стороне клиента, это не будет работать, если вы отключите его из браузера.
Если вы проверяете Gmail, Facebook или любой другой хороший сайт, они справляются с этим очень хорошо, и нет, это не просто код JavaScript, как предлагается на этом форуме. Как Google работает с кнопкой «Назад» после выхода из системы? ,
Итак, мой вопрос, как они справляются с этим на самом деле?
На домашней странице вам нужно проверить, активна ли SESSION.
Когда пользователь выходит из системы, вам нужно уничтожить SESSION.
Например:
На домашней странице
session_start();
if(!isset($_SESSION['variableName']))
{
header("location:login.php");
}
На странице выхода:
session_start();
session_destroy();
Надеюсь это поможет.
Однажды у меня возникла эта проблема, и, наконец, я получил много крошечных решений для этого.
Поместите тег noscript в общий заголовочный файл. Я возвращаю текст, когда JS выключается.
<noscript>Your browser does not support JavaScript!</noscript>
Другой метод проверки пользователя вошел или нет на каждом уровне
setInterval(function(){
$("#autorefresh").load("checklogin.php?screenName=autorefresh");
}, 5000);
И, наконец, положить это обратно предотвратить JS
history.pushState (null, null, ‘loginController.php? time =
$currentDateTime; ?>');
window.addEventListener('popstate', function(event) {
history.pushState(null, null, 'loginController.php?time=<?php echo $currentDateTime; ?>');
});
Это мой опыт знаний … Спасибо