我的一个项目有登录系统,使用我自己的登录系统和facebook登录。问题是Facebook的登录似乎并没有在mac设备上注销。
我的代码
session_start();
if(isset($_COOKIE['checkuserst'])) {
unset($_COOKIE['checkuserst']);
setcookie('checkuserst', '', time() - 3600, '/');
}
unset($_SESSION['username']);
header("Location:index.html");
除safari外,所有windows浏览器的cookie都将过期,在mac中,没有任何浏览器cookie将过期。
有人能给我指一下解决这个问题的正确方法吗。
您不应该依赖浏览器中的cookie过期来确定用户是否注销(因为用户很容易伪造欺诈cookie)。将会话过期存储在$_SESSION
或数据库中。当您收到请求时,即使存在cookie,也要首先检查服务器存储中匹配的cookie,确保它没有过期。
这样,无论浏览器中发生什么(例如浏览器没有删除过期的cookie)都不会影响服务器端的安全