удалить из базы данных после закрытия браузера - PullRequest
2 голосов
/ 24 мая 2011

Я занимаюсь разработкой приложения для электронной коммерции.Но проблема в том, что когда пользователь добавляет товар в корзину и закрывает браузер перед заказом, корзина забирает все товары.Все элементы корзины сохранены в таблице.

Я просто хочу сбросить корзину, если пользователь закрывает браузер без заказа.

Ответы [ 3 ]

2 голосов
/ 24 мая 2011

Вы можете использовать событие 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>
2 голосов
/ 24 мая 2011

Нет способа надежно узнать / предупредить сервер, когда пользователь закрывает свой браузер.Вам необходимо переосмыслить свой дизайн: т.е. не сохранять элементы корзины в базе данных, пока оформление заказа не будет завершено.Вы можете и должны хранить элементы корзины в сеансе пользователя или, возможно, в файлах cookie на стороне клиента (если размеры вашей корзины не являются гигантскими).

В противном случае введите данные корзины в БД с помощью ключа сеанса.Затем вы (возможно) можете добавить какую-то зацепку к управлению сеансами вашего приложения, чтобы очистить содержимое БД после очистки сеанса.

1 голос
/ 24 мая 2011

Серверная сторона фактически не знает, когда вы закрываете браузер.Вы можете пропинговать сервер onBeforeClose и попросить его очистить корзину, но это будет означать, что когда пользователь закрывает вкладку - он тоже сбрасывает.

Если ваш пользователь вошел в систему - вы можете сохранитьсессионные куки-файлы только для «сеанса браузера», и таким образом пользователь выйдет из системы, когда вернется.В этот момент - всякий раз, когда пользователь входит в систему - сбрасывайте корзину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...