浏览器关闭后从数据库中删除

时间:2011-05-24 14:19:43

标签: php mysql database session

我正在开发一个电子商务应用程序。但问题是当用户将产品添加到购物车并在订购前关闭浏览器时,购物车将获取所有产品。所有购物车项目都保存在表格中。

如果用户在没有订购的情况下关闭浏览器,我只想刷新购物车。

3 个答案:

答案 0 :(得分:2)

您可以使用Javascript事件来捕获浏览器并将ajax请求发送到将删除购物车数据的某个脚本:

<强>已更新

<script language="javascript">
function fnUnloadHandler() {
  xmlhttp=null; 
  if (window.XMLHttpRequest) 
     {// code for Firefox, Opera, IE7, etc. 
        xmlhttp=new XMLHttpRequest(); 
     } 
  else if (window.ActiveXObject) 
     {// code for IE6, IE5 
        xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
     } 

  if (xmlhttp!=null) 
     {  
        xmlhttp.open("GET","http://yourhost/del_cart_actionFile.php",true); 
        xmlhttp.send(null); 
     } 
     else 
     { 
        alert("Your browser does not support XMLHTTP."); 
     } 
}
</script>
<body onbeforeunload="fnUnloadHandler()">
</body>

答案 1 :(得分:2)

当用户关闭浏览器时,无法可靠地知道/警告服务器。您需要重新考虑您的设计:即除非结帐完成,否则不要将购物车项目持久保存到数据库中。您可以而且应该将购物车项目保留在用户会话中,或者可能保存在客户端的cookie中(除非您的购物车尺寸很大)。

否则使用会话密钥键入数据库中的购物车数据。然后,您可以(可能)在应用程序的会话管理中添加某种挂钩,以便在清除会话时刷新数据库内容。

答案 2 :(得分:1)

服务器端实际上并不知道您何时关闭浏览器。您可以ping服务器onBeforeClose并告诉它刷新购物车,但这意味着当用户关闭标签时 - 它也会刷新。

如果您的用户已登录 - 您只能将会话cookie保留为“浏览器会话”,这样用户在他或她回来时就会被注销。此时 - 每当用户登录时 - 刷新购物车。