| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Изменение БД при выходе? |
| Автор: Reptor 13.2.2005, 11:04 |
| Например есть поле в БД которое при входе устанавливаеться "1". А как сделать так что когда мы закрываем окно (страницку) тоесть при выходе БД менялась - тоесть это поле устанавливалось в "0" |
| Автор: Mal Hack 13.2.2005, 13:07 |
| Никак... А что ты сделать пытаешься? |
| Автор: Reptor 13.2.2005, 13:16 |
| Мне надо если человек зашёл на страничку то поле в БД установилось в 1 (естественно только 1 строка которая ему соответствует). И когда он выходит мне надо в БД отметить что его уже нету тоесть это 1 заменить на 0 |
| Автор: Mal Hack 13.2.2005, 13:21 |
| С помощью PHP нельзя определить, когда человек вышел со страницы. Если ты хочешь сделать систему On-Line пользователей или авторизацию, то делается это другими способами. Тут на форуме это уже наверняка обсуждалось. |
| Автор: Reptor 13.2.2005, 13:34 |
| А что на <BODY> какогото unloadнет или чего небудь в этом роде? |
| Автор: Mal Hack 13.2.2005, 13:40 |
| Не путай. Есть клиентские технологии, а есть серверные. |
| Автор: Reptor 13.2.2005, 13:47 |
| так можно ж вызывать на unload (если такова есть) функцию которая с помощю XMLHttpRequest дёргала б РНР скрипт который бы лез в БД и делал там что надо а потом брал из БД новый список людей которые сейчас присутствуют? |
| Автор: Mal Hack 13.2.2005, 13:51 | ||
Это - конец загрузки. Есть OnExit, но не забывай, что если я просто закрываю браузер или вкладку то оно не сработает. |
| Автор: Reptor 13.2.2005, 14:05 | ||
тоесть если нажать на крестик то нечего не будет? И ещё я нашол функцию OnUnload |
| Автор: Mal Hack 13.2.2005, 14:11 | ||||
Естественно... Вариант с открытием Попап окна я тебе не предлагаю.
OnLoad - при загрузке OnUnLoad - окончание загрузки. |
| Автор: Sardar 13.2.2005, 14:31 | ||
Нет, при закрытии окна, но не во всех браузерах есть это событие. Reptor а почему бы не писать время последнего захода юзера, если интервал между текущим и записанным больше таймаута, то юзера более нет. Наиболее простой и часто реализуемый способ. |
| Автор: Reptor 13.2.2005, 15:31 |
| Что значит таймаут? |
| Автор: Mal Hack 13.2.2005, 15:43 | ||
Ты пишешь в базу время, когда последний раз пользователь зашел на страничку. Затем ты смотришь, чтобы это время было больше чем 15 минут, к примеру. Эти 15 минут и будут тайм-аутом. |
| Автор: Axxent 13.2.2005, 16:53 |
| Да. Таймаут - это самое разумное решение. Конечно, можно средствами JS при закрытии порождать новое окно, которое обращалось бы к какому-то скрипту, сбрасывающему базу, но смысл? |
| Автор: Reptor 13.2.2005, 17:20 |
| так сто мне весно надо юудет дёргать БД и сравнивать время. И как в БД внести изменения. Получаеться за каждым пользователем надо следить каждую секунду или как? |
| Автор: Alx 13.2.2005, 17:21 |
| я бы сделал попапом... |
| Автор: penizillin 13.2.2005, 17:34 | ||
|
| Автор: Alx 13.2.2005, 17:38 |
| penizillin а если обращения не будет? |
| Автор: Reptor 13.2.2005, 17:43 | ||
А это как? |
| Автор: penizillin 13.2.2005, 17:58 | ||
|
| Автор: Sardar 13.2.2005, 18:51 | ||||
То проходит время таймаута и юзер выкидывается из списка активных юзеров. Reptor в базе ничего менять не нужно и никаких флагов выставлять не нужно! Просто выбираем всех у кого время прошедшее с последнего визита не больше таймаута.
Только скрытым ифреймом, попапы браузер убивает. При скрытии окошка браузера у тебя не будет времени загрузить страницу(вспомним про тех кто на модемах), к тому же браузер может запретить любую перезагрузку при закрывании окна. Вывод: не извращайтесь, делайте по старинке, как уже много лет поверенно и доказанно что работает |
| Автор: Opik 13.2.2005, 22:13 |
| Mal Hack есть функция JS, которая что то делает, при закрытии браузера/окна... только говорить не буду, т.к она это не выход |
| Автор: Mal Hack 13.2.2005, 22:54 |
| Это обрадотка события толи OnClose, толи ONExit. В любом случае делать надо по тайм-ауту |
| Автор: Reptor 14.2.2005, 16:39 |
| если делать по таймауту тогда вдруг пользователь отлучиться случайно или ещё что (тоесть не будет давать о себе знать) то получиться что его принудительно выкенет а так мне нельзя, а если рано выйдет тогда список пользователей обновиться не сразу а через определённое время. Тоесть мне 100% надо знать когда он нажал кнопочку выход или крестик (но не релоуд). Может кто то вспомнит функцию JS с помощью которой можна такое сделать или ещё чего то (РНР)? |
| Автор: Mal Hack 14.2.2005, 16:56 | ||||||
Так все делают.
Если ты ее сам сделаешь - то по ее нажатии и узнаешь.
Никак, без открытия нового окна. И то сработает лишь в 30% случаев. |