我遇到会话破坏问题。我正在该文件中运行一个名为logout.php的脚本我正在销毁用户会话我也在执行一个查询,这将删除我的购物袋。这是正常工作,但当我关闭浏览器或会话后一段时间自动销毁,那时我必须删除我的购物袋,在这种情况下logout.php将不会调用。那么我怎样才能实现这一点。
logout.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')
?>
答案 0 :(得分:2)
没有办法编写可以安全地假设在会话被销毁时调用它的代码。
最简单的方法就是在你的购物篮上设置一个“最后访问”的时间戳,你在每次访问时都会更新,然后每隔一小时左右运行一个cron作业(预定作业),删除所有没有的篮子被访问过,比方说,6小时或更长时间。这不会在会话超时的同时删除它,但从长远来看会将旧的篮子从数据库中删除。
答案 1 :(得分:1)
我对这个问题有两个答案: 1)您可以使用javascript事件window.onbeforeunload清除您的购物袋 例如:
window.onbeforeunload= function(){
// your ajax call to clear shopping bag
}
2)我会推荐这个选项: 您可以在登录时清除用户购物袋。
答案 2 :(得分:0)
您是否确定要在(例如)用户&#39;之后清理购物袋?浏览器关闭?您可以发出警告,例如上次您没有正确退出,是否要继续购物或重新开始?&#39; ,像这样的。
HTTP是一种无状态协议,因此您无法确定浏览器何时实际关闭。在我看来,你需要处理会话超时,以便在一段时间过后,购物袋无论如何都会被清除,除非仍有用户活动。
希望有所帮助。