Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Фиксация последнего визита


Автор: WebS 7.11.2009, 12:43
На форумах часто сохраяют дату последнего визита.., и помечают темы с новыми сообщениями...

Вопрос: Как сохранить дату последнего посещения? С учётом того что нужно использовать всё время сессии, а не затирать текщим посещением.


Автор: Ипатьев 7.11.2009, 13:10
Не визита, наерное, имеется в виду, а клика. 
Записать время в базу

Автор: WebS 7.11.2009, 17:31
Цитата

Не визита, наерное, имеется в виду, а клика. 
Записать время в базу
Нет  smile 

Автор: ЧиоЧигас 7.11.2009, 17:32
Проще всего отправить кук юзеру с датой его последнего визита, а затем ее считать.  Чтобы при каждой загрузке страницы не отправлять кук, а только при ее первом показе, можно ввести переменную $_SESSION["vizit"].  Таким образом, кук будет посылаться только если юзер закрыл окна браузера затем  открыл его и повторно перешел к вам на страницу.(или по тайм ауту) 
Вот мой вариант:

Код
<?php
   session_start();
   if (!isset($_SESSION["vizit"]))
   {
     $d = date('d-m-Y, в H:i:s');
     setcookie('date_viz', $d, (time() + 3600*24*30));
     $_SESSION["vizit"] = true;
   }
   $date_viz = (isset($_COOKIE["date_viz"]) ?  $_COOKIE["date_viz"] : 'Неизвесно' );
   echo "Ваш последний визит: $date_viz";
?>



Автор: Ипатьев 7.11.2009, 17:39
WebS, ну расскажите мне, что вы имеете в виду под словом "визит".
Я с большим интересом послушаю.

ЧиоЧигас, вы правда думаете, что именно так форумы и делают?

Автор: ЧиоЧигас 7.11.2009, 17:58
Цитата
ЧиоЧигас, вы правда думаете, что именно так форумы и делают?

Я написал проще всего.

Я вам напишу, как я вижу работу форума, а вы меня поправьте, если что не так.
Каждый раз при заходе юзера на форум производится попытка считать  кук, назовем его $_COOKIE["id"].  Этот кук представляет собой уникальный идентификатор. Если кук считан, ищется в БД   данные о юзере по этому id. Потом, в целях безопасности, отправляется $_COOKIE["id"] уже с новым значением, так же обновляются данные о юзере в БД, дата визита, id. 
Если кук $_COOKIE["id"] не считан, значит юзер не зареген или давно уже не бывал на форуме. 
Как-то так.  

Автор: Ипатьев 7.11.2009, 18:10
Это все не имеет отношения к вопросу. Здесь описана банальная авторизация, хотя тоже довольно кустарная. 

Скажу честно. Я думаю, что не обладая практическим опытом в реализации подобной функции или теоретическим опытом в веб-строительстве вообще, вряд ли удастся придумать работающий вариант.
Конкретно в вашем варианте выше есть две принципиальных ошибки, не считая более мелких.

Автор: ЧиоЧигас 7.11.2009, 18:22
Ну знаете, не боги горшки лепят. Хотелось бы еще мнения других участников форума услышать.
Цитата
Я думаю, что не обладая практическим опытом в реализации подобной функции или теоретическим опытом в веб-строительстве вообще, вряд ли удастся придумать работающий вариант.


Дайте ссылку, пример или кратко опишите суть вашего решения. Как то размыто высказываетесь (без обид) . 

Цитата
Конкретно в вашем варианте выше есть две принципиальных ошибки, не считая более мелких.

Какие? Я же просил поправить если что не так.

Автор: Ипатьев 7.11.2009, 18:36
Ну как сказать. Я не думаю, что у вас получится слепить и обжечь глиняный горшок smile
Это выражение не означает, что любое дело может выполнить сходу любой неуч.
Оно наоборот, подтверждает мои слова. Обжечь горшок - сложная наука, но неустанный труд и приобретаемый при этом опыт помогут её осилить.


Автор: ЧиоЧигас 7.11.2009, 18:50
Ладно про горшки, вы лучше про ошибки скажите. Мне действительно интерестно. 

Автор: Ипатьев 7.11.2009, 19:06
Я хочу сначала услышать автора топика. 

Автор: capitan 7.11.2009, 21:39
WebS, на форумах сохраняют последнюю дату не визита, а входа. Думаю теперь понятно, когда в базу летит дата?

Автор: WebS 11.11.2009, 19:31


Решил, оч просто smile
При каждом визите время в бд обновляется. А фиксация старого значения производиться через сессию. Т.е если переменная сессии существует, то она не меняется, если её нет - сохраняет значение предпоследнего визита, которое берется из базы. Работа с сессией идёт до обновления базы.
В процессе сессии в независимости от обновлений страниц "время последнего визита" не меняется smile

Автор: Ипатьев 11.11.2009, 21:39
ЧиоЧигас, одна ошибка в том, что на куках это сделать в принципе невозможно.
Человек может заходить на сайт не с одного компьютера...
А вторую я забыл уже smile
наверное то, что не сохраняется время клика.

Автор: MoLeX 12.11.2009, 06:36
Цитата(WebS @  7.11.2009,  12:43 Найти цитируемый пост)
Как сохранить дату последнего посещения?

при заходе на форум, скрипт проверяет авторизирован ты или нет. сложно ли добавить Update-запрос если пользователь авторизирован?

Автор: nezabor 13.11.2009, 00:02
насколько я помню на форуме отображается последняя авторизация

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)