【发布时间】:2012-03-04 02:04:08
【问题描述】:
有没有办法使用户的 cookie 失效?
场景:
- 用户访问我的网站(我可以获得任何我想要的数据);
- 用户离开页面;
- 一段时间后,来自另一台服务器的回调带有用户 ID。此时,我需要使用户会话和 cookie 无效。
对于会话,这很简单:
session_id($user['session_id']);
session_destroy();
如何使用 cookie 实现相同的功能?
请参阅此帖子下的 cmets 了解更多详细信息以及它与 Facebook 的关系。
简单的解决方案是替换 PHP-SDK 将用户信息从 cookie 存储到会话的位,但转到包文件总是一个坏主意。
【问题讨论】:
-
“来自另一台服务器的回调带有用户 ID”到底是什么意思?
-
您并没有“使 cookie 无效”,而是使 cookie 数据扩展到与请求一起使用它的任何人的权限无效。一,你怎么知道它来自不同的服务器?第二,如果您可以确定一个请求是不合法的,那么无论您的服务器上的 cookie 数据引用以授予其代表用户执行操作的权限,都需要被删除,即,指示的任何会话,或其他任何内容。但是,cookie 只是该数据的传输。
-
@JaredFarrish 仅接受来自 Facebook 服务器的请求。问题是 Facebook SDK 使用 cookie 来获取有关用户的一些数据(用户 ID,[..])。现在,系统设计逻辑是这样的:如果 FB PHP-SDK 告诉我存在用户 ID,则表示该用户已通过身份验证 -> 继续检查用户是否在 DB 中。如果没有,请获取有关用户的信息。这是引发异常的地方,因为实际上应用程序不再有权访问此信息。所以我需要想出一种方法来删除 PHP-SDK 用来存储这些信息的 cookie。
-
这就是问题的所有相关信息,Guy。就目前而言,您的问题并未说明您的实际问题是什么。我会编辑您的问题,添加该描述,并为其添加
facebook和/或facebook-api标签。 -
@Guy - 我试图用更多关于 cookie 本质的上下文来更新我的答案,尽管我知道它不会帮助你解决困境。但我认为理解 cookie 的字面意义会有所帮助,它只是包含在客户端/服务器之间的标头请求或响应中的文本字符串。
标签: php facebook cookies session-cookies