Небольшой скрипт, который выводит, дату последнего посещения сайта пользователем
Нормальный ли у меня алгоритм получился?
<?php /* В первую куку записывается первый визит и она означает последний визит, при повторном входе, проверяется, есть ли сессия юзера, если есть то создать вторую куку с визитом и сравнить их и удалить первую куку и так каждый раз */ session_start(); $_SESSION['user'] = 'Dima'; $lastVisit = date('d-m-Y'); if(!empty($_SESSION['user'])) { if(!isset($_COOKIE['lastVisit'])) { setcookie('lastVisit', $lastVisit, time() + 3600*24*30); } else { setcookie('lastVisit2', $lastVisit, time() + 3600*24*30); $lastArr = explode('-', $_COOKIE['lastVisit']); $newArr = explode('-', $lastVisit); echo 'Последний визит был ' . (mktime(0, 0, 0, $newArr[1], $newArr[0], $newArr[2]) - mktime(0, 0, 0, $lastArr[1], $lastArr[0], $lastArr[2])) / 86400 . ' дней назад.'; setcookie('lastVisit', '', time()); } } ?> |
Не просто выводит дату, а пишет, сколько дней отсутствовал
|
Цитата:
Последнее посещение 8 ноября и текущее 9 ноября, совсем еще не означает, что прошли сутки, это могут быть и секунды. Оперировать надо датой/временем. Ну и пора бы ознакомиться с разделом дата/время руководства не только с функциями, но и с классом DateTime, в частности http://fi2.php.net/manual/ru/datetime.diff.php. Получать дату шиворот навыворот, затем ее компоненты переворачивая, это моветон. |
date_diff?
|
Почему повторная установка куки вообще непонятный маневр?
А как по другому сохранять последний визит? |
Это псевдоним функции класса DateTime. Глубже в раздел окунитесь, полезно.
|
Цитата:
setcookie(...) сразу же $_COOKIE['lastVisit'] - что уже лажа и затем setcookie(...) |
Цитата:
запустите с сервера <?php setcookie('myCookie', 'test'); ?> <script> console.log( document.cookie ); </script> |
Цитата:
Цитата:
Доступны потому, что в памяти, серверу нет. |
куки приходят в заголовках
когда браузер получает страницу он записывает куки сразу убейте процесс браузера, данные будут записаны |
Часовой пояс GMT +3, время: 15:48. |