为mac设备设置cookie过期的正确方式


Proper way to set cookie expire for mac devices

我的一个项目有登录系统,使用我自己的登录系统和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)都不会影响服务器端的安全