2016-07-23 67 views
0

我的一个项目中登录系统使用我自己的登录系统和Facebook登录。问题是Facebook登录似乎没有在MAC设备上注销。为Mac设备设置cookie过期的正确方法

我的代码

session_start(); 

if(isset($_COOKIE['checkuserst'])) { 
unset($_COOKIE['checkuserst']); 
setcookie('checkuserst', '', time() - 3600, '/'); 
} 

unset($_SESSION['username']); 

header("Location:index.html"); 

所有窗口浏览器除了Safari和在Mac没有浏览器的cookies即将到期的饼干到期。

有人可以指出正确的方法来解决这个问题。

+0

可以准确说明你希望看到什么和发生了什么呢? – BeetleJuice

+0

@BeetleJuice所有的Windows浏览器cookies都将过期,除了safari和mac,浏览器的cookies都不会过期。 – Jordyn

回答

1

您不应该依靠浏览器中的cookie过期来确定用户是否已注销(因为用户容易制造欺骗性cookie)。将会话到期存储在$_SESSION或数据库中。当您收到请求时,即使存在Cookie,也要先检查服务器存储器中的匹配cookie,并确保它未到期。

这样在浏览器(如浏览器不删除过期的cookie),无论发生什么事不会影响你的服务器端安全

+0

@感谢您的解释,但我的直接问题是,cookie不会在mac设备上过期。 。 – Jordyn

+0

@Jordyn帮助我理解为什么这对你很重要。为什么这是一个问题?消极影响您的网站? – BeetleJuice

+0

由于cookie不会过期,因此mac用户无法注销。这是问题。 – Jordyn