Страницы на моем php сайте должны постоянно обновляться. Например, у меня есть расписание для каждого пользователя, которое отличается, и если я войду в систему и посмотрю расписание и выйду из системы, то, когда я войду в систему как другой пользователь и посмотрю это расписание, оно покажет расписание предыдущих людей, если я не обновлю его. На моем сайте есть еще много страниц с этой проблемой. Нужно ли делать что-то дополнительное при выходе? Я знаю, что могу использовать ctrl + f5, но хочу, чтобы сайт мог управлять своими делами. У кого-нибудь еще есть подобные проблемы к этому? Есть предложения?
Вот мой код выхода из системы:
<?php
//include 'header.php';
session_start();
include 'dbconnect.php';
//set the session date in to an empty array
$_SESSION = array();
//Expire thier cookie files
if (isset($_COOKIE["user"]) && isset($_COOKIE["pass"]))
{
setcookie("user", '', strtotime( '-10 days'), '/');
setcookie("pass", '', strtotime( '-10 days'), '/');
session_destroy();
}
//destroy the session variables
session_destroy();
//double check if the user exists
if (isset($_SESSION['username']))
{
header("Location: message.php?msg=Error:_Logout_Failed");
} else {
session_destroy();
header("Location: index.php");
exit();
}
session_destroy();
?>
Прежде всего, session_destroy()
само по себе недостаточно, чтобы уничтожить данные сеанса, см. Как я могу очистить мои данные сессии php правильно?
От: https://stackoverflow.com/a/6472150/3536236
После использования
session_destroy()
файл cookie сеанса удаляется и
сеанс больше не хранится на сервере. Значения в$_SESSION
может
все еще будут доступны, но их не будет на следующий загрузка страницы.
редактировать: чтобы обычно гарантировать, что данные сеанса очищены, попробуйте это:
session_start();
$_SESSION = array(); //clears the session data.
session_destroy();
Во-вторых, это может быть проблемой просто потому, что вы входите в систему как несколько пользователей с одного компьютера, что может не происходить с пользователями / хостами, не являющимися администраторами. Ничто в показанном вами коде на самом деле не показывает, как отображаются данные, если вы отображаете данные из фиксированной точки, например из файла (а не из базы данных), вы также можете изучить возможность тот clearstatcache()
могу помочь тебе.
установите заголовки на странице вывода PHP, чтобы принудительно обновить страницу, информация о сервере и заголовке может позволить браузеру кэшировать страницу, поэтому добавьте что-то вроде
header("Cache-Control: no-cache, must-revalidate"); //HTTP 1.1
header("Expires: Sat, 26 Jul 2007 05:00:00 GMT"); // Date in the past
Чтобы ваши выходные страницы (выше HTML-кода), чтобы браузер не кэшировал их.
Других решений пока нет …