当浏览器关闭、崩溃、PC 重新启动等时,我需要关闭会话。
我知道有 cookie 解决方案,但我需要一些安全的服务器端,因为用户可以删除 cookie。
你不必。垃圾收集器将清理您的会话。
php ini 设置session.gc_maxlifetime
决定了会话可以保持活动的时间。
超过此值时,会话将自动删除。
这不能按照你想象的方式完成。您不能在 php.ini 中直接对此类事件做出反应。您可以获得的最接近的方法是使用 ajax 来保持会话处于活动状态。
yourdomain.com/api/pulse.php
在您的页面中插入一个 javascript,每 60 秒发送一次请求
。嗨,您不需要关闭会话。因为它的默认会话行为是当用户关闭浏览器时它会破坏会话。我们可以通过 session.cookie_lifetime = 0 改变 php.ini 文件中会话的生命周期来改变这种行为。否则默认情况下,当您重新打开浏览器时,会话中将没有数据。
当用户运行 crash brouser 时,cookie 会自动删除。
在 php 中无法知道用户何时关闭 brouser。
一些不容易的方法是 websocket 和长轮询连接,但它不容易配置,也不是好主意。