2

我在会话销毁方面遇到问题。我正在该文件中运行一个名为 logout.php 的脚本,我正在破坏用户会话,我正在执行一个查询,该查询将删除我的购物袋。这工作正常,但是当我关闭浏览器或会话在某个时间后自动销毁时,那时我必须删除我的购物袋,当然在这种情况下 logout.php 不会调用。那么我怎样才能做到这一点。

注销.php :-

<?php
include_once('functions/config.php');
session_start();


$sql = "DELETE FROM baskets WHERE member_id = '".$_SESSION['memid']."' ";

mysql_query($sql);

session_destroy();   


header('location:index.php')

?>
4

3 回答 3

2

没有办法编写可以安全地假设它在会话被销毁时调用的代码。

做你想做的最简单的方法是在你的购物篮上设置一个“最后访问”的时间戳,你每次访问都会更新,然后每隔一小时左右运行一个 cron 作业(计划的作业),以删除所有尚未访问的购物篮比方说,6 小时或更长时间。这不会在会话超时的同时将其删除,但从长远来看会将旧篮子保留在数据库之外。

于 2013-01-16T07:25:35.237 回答
2

对于这个问题,我有两个答案:1)您可以使用 javascript 事件 window.onbeforeunload 示例清除您的购物袋:

     window.onbeforeunload= function(){
        // your ajax call to clear shopping bag
     }

2)我会推荐这个选项:您可以在他登录时清除用户购物袋。

于 2013-01-16T09:29:20.940 回答
0

您确定要在(例如)用户浏览器关闭时清理购物袋吗?您可以发出警告,例如“您上次没有正确注销,您想继续购物还是重新开始?” ,类似的东西。

HTTP 是一种无状态协议,因此您无法判断浏览器何时真正关闭。在我看来,您需要处理会话超时,以便在经过一段时间后,购物袋无论如何都会被清除,除非仍有用户活动。

希望有帮助。

于 2013-01-16T07:25:11.703 回答