удалить информацию из таблицы MySQL, когда пользователь закроет свой браузер - PullRequest
0 голосов
/ 04 февраля 2010

я создаю две таблицы (в mysql) с именем

  1. table_temp_guest
  2. table_temp_order

Теперь, если гость входит, мы сохраняем его личную информацию вэта первая таблица, и если он покупает что-либо из любого киоска, он сохраняется как временный заказ в table_temp_order.

, теперь мой вопрос:

я использую сеансid, поэтому, когда пользователь выходит из системы (без проверки), то я удаляю его информацию (личную и порядковую) из обеих таблиц), используя идентификатор сессии, НО, если он закрывает браузер или не выходит из системы (любой резонанс), то какудалите его информацию из обеих таблиц, пожалуйста, предложите мне, как это сделать?

дополнительный вопрос: есть ли другой способ сделать весь этот процесс каким-либо другим способом.

Ответы [ 5 ]

4 голосов
/ 04 февраля 2010

Вы не можете определить, когда пользователь закрывает браузер или вводит новый адрес. Как правило, вам нужно иметь функцию «тайм-аут», как и остальные сайты.

2 голосов
/ 04 февраля 2010

Существует событие window.onunload, которое вы можете обнаружить с помощью javascript, но оно не поддерживается повсеместно, и оно обнаруживает, окно закрывается, а не закрывается браузером.

Возможно, ваше лучшее разрешениебудет отслеживать session_id и дату последнего доступа.Повторно обновляйте таблицу last_accessed_date при каждой загрузке страницы и удаляйте все, что старше нескольких часов.

1 голос
/ 04 февраля 2010

Если вы все равно используете session_id () (я думаю, это то, что вы подразумеваете под идентификатором сессии), просто используйте php-сессии.PHP автоматически делает их недействительными, и вам не нужны эти две таблицы (вы можете хранить все, что вам нужно, в $ _SESSION).

Нет способа проверить, не был ли закрытый броузер, на который вы могли бы положиться.

Если вы не хотите менять способ работы вашего проекта сейчас, просто добавьте созданное поле в таблицы и установите его в текущее время () всякий раз, когда вы «видите» конкретного пользователя.Затем установите cronjob, который удаляет все записи из этой таблицы, которые старше определенного времени ожидания.

1 голос
/ 04 февраля 2010

Тайм-аут будет лучшим методом.

Запись последнего активного времени в гостевой таблице. Периодически выполняйте на веб-сервере задание cron для очистки сеансов, срок которых превышает максимально допустимое.

Будьте осторожны с количеством времени, которое вы отводите. Вы должны учесть медленных пользователей и потерянные соединения.

0 голосов
/ 04 февраля 2010

Также вы можете попробовать запустить скрипт на стороне клиента и пинговать сервер, чтобы вы знали, что если скрипт некоторое время не пингуется, пользователь закрыл браузер. При этом, я бы согласился с предыдущими постерами, процедура тайм-аута / очистки была бы лучшей.

Для этого вы бы добавили поле ModifiedDate в свои таблицы, вы можете установить его как поле «ON UPDATE» для удобства использования, а затем просто удалить все записи, у которых поле ModifiedDate старше нескольких часов.

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