Небольшой скрипт, который выводит, дату последнего посещения сайта пользователем
Нормальный ли у меня алгоритм получился?
<?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>
|
Цитата:
Цитата:
Доступны потому, что в памяти, серверу нет. |
куки приходят в заголовках
когда браузер получает страницу он записывает куки сразу убейте процесс браузера, данные будут записаны |
Цитата:
А вообще, ради поговорить: кука это ведь идентификатор на будущее и со стороны сервера все логично - нет куки, запрос на установку, а доступна будет потом. Со стороны клиента как-то не логично - установили то, что потом потребуется, а оно уже есть (если отбросить, что браузер этим занимается, а значит из этого все и вытекает). |
laimas,
вам лень провести эксперимент убив процесс броузера, убедившись, что куки записываются сразу здесь нечего говорить и ссылатся на кого-либо, выполнили код, убили процесс, изменили код с другими параметрами, открыли вновь, Есть старые параметры и новые. Что по вашему убеждению не должно быть. А они есть :haha: |
Обязательно, надо посмотреть почему теория и практика разъехались, но потом, сейчас меня интересуют куда более жизненные проблемы.
|
| Часовой пояс GMT +3, время: 21:30. |