【问题标题】:How to unset the session in PHP Using Javascript?如何使用 Javascript 在 PHP 中取消设置会话?
【发布时间】:2010-06-17 09:24:41
【问题描述】:

如何在 PHP 中使用 Javascript 取消设置会话?

【问题讨论】:

    标签: php javascript session


    【解决方案1】:

    【讨论】:

    • 如果你不知道如何在 PHP 中使用 cookie,你不应该在会话附近。
    • ...这是“肮脏的方式”,而 BoltClock 有“干净的方式”。你会选择哪一个? ;-)
    • @Palantir 当然,它不会立即取消设置服务器上的会话,但如果服务器无法再从请求中识别会话,会话将提前超时或稍后。
    • @Gordon:我用“脏”这个词来暗示黑客。如果您使用 session_start 创建会话,则应该使用超时或 session_destroy 将其终止,以防未来(以防万一 PHP 的未来版本发生变化,例如,如果他们开始使用 flash cookie 而不是正常的那些)。您正在覆盖 PHP 的机制,所以这就是我认为这是一个 hack 的原因。这就是说,杀死 cookie 肯定会起作用,除非他在查询字符串上使用 SID 传递 PHP,但是谁在这样做呢?如果 cookie 被禁用,PHP 是否仍会退回到它?
    • @Palantir 我不会称其为 hack。当session.cookie_lifetime 定期过期时,它也不会通知服务器。它刚刚消失,而服务器上的存储仍然存在,直到它被 gc'd。就像session_destroy() 会删除会话数据但不会取消设置cookie。这取决于您想要做什么:删除会话数据或删除指向它的链接(或两者)。
    【解决方案2】:

    您不能直接使用 JavaScript 来执行此操作,因为会话仅由服务器处理;您需要对取消设置会话的 PHP 脚本进行 Ajax 调用。

    【讨论】:

    • 如果 cookie 不是 HTTP,你可以用 javascript 修改它们,对吗?如果是这样,那将终止会话。
    • @Graphain:好点。你仍然需要向服务器发送一些东西,让它知道 cookie 已经消失了。
    • 从技术上讲,服务器不需要知道 cookie 已经消失。如果 session 存储没有被触动,会在 session.gc_maxlifetime 秒后被垃圾回收
    猜你喜欢
    • 1970-01-01
    • 2014-02-20
    • 2012-08-04
    • 1970-01-01
    • 2016-10-01
    • 2013-02-17
    • 2015-10-08
    • 2011-04-05
    相关资源
    最近更新 更多