Может ли кто-нибудь сказать мне, почему это не работает? В моей базе данных lastactive
находится 2013-12-10 16:15:12
, обновляется каждый раз, когда пользователь обновляет любую страницу на моем сайте.
Я выбираю его и устанавливаю его как переменную:
$lastactive = $row[5];
Вот где я думал, что он должен работать, но нет. Использование 10 секунд для тестирования.
if(time() > $lastactive+10){ print('<div id="user_online_status" style="color: #aaa;">[OFFLINE]</div>'); } else if(time() < $lastactive+10){ print('<div id="user_online_status">[ONLINE]</div>'); }
Замените оператор SELECT :
SELECT lastOnline FROM user
к чему-то вроде …
SELECT UNIX_TIMESTAMP(lastOnline) FROM user
это оно. Вы в настоящее время проверяете строку Date на отметке времени UNIX.
Вы сравниваете временную метку unix с строкой datetime MySQL. Вам необходимо преобразовать его в временную метку unix перед сравнением двух:
$lastactive = strtotime($row[5]);
Я не вижу его хорошей проверки, чтобы проверить время.
Что делать, если пользователь не обновляет страницу, он позволил странице открыть и пошел есть? , он будет выходить из системы? это будет анонимность.
Я думаю, лучше использовать разгрузку
$(window).unload(function() { // Send an Ajax request to logout.php });
если пользователь не обновляет страницу, вы можете проверить его на сервере с помощью cron.
$limit = $userOnline+60; // cron set to run every minute if($userOnline < $limit) $userStatus = "offline"; else $userStatus = "online";