我的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();
?>
答案 0 :(得分:0)
首先,session_destroy()
本身不足以销毁会话数据,请参阅How can I clear my php session data correctly?
来自:https://stackoverflow.com/a/6472150/3536236
使用
session_destroy()
后,会话cookie将被删除 会话不再存储在服务器上。$_SESSION
中的值可以 仍然可用,但它们不会出现 next 页面加载。
编辑:要通常确保清除会话数据,请尝试以下操作:
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代码上方)以确保浏览器不会缓存它们。