Intereting Posts
Как подключиться к экземпляру RAD Amazon MySQL через PHP через SSL phpseclib – попытка подключения к коммутатору HP procurve возвращает ошибку: выполнение команды SSH не поддерживается динамически обновлять диаграмму google при выпадающем списке с помощью ajax и php Лучший подход для добавления записей в БД с помощью php / ajax / mysql? Ошибка анализа: синтаксическая ошибка, неожиданный «public» (T_PUBLIC) Почему по умолчанию строковые функции PHP не являются многобайтовыми? Как перенаправить пользователей на другую страницу? Можно ли указать интерфейс исходящей сети для использования в PHP SoapClient? JQuery не будет загружать контент в область DIV .. где я ошибся Каков размер лимита почтового запроса? Laravel: многие-ко-многим с общим столом PHP: массив для самостоятельной привязки Обход ошибки Ошибка 413 слишком большая jQuery AJAX POST для таблицы mysql для динамических табличных данных. Я делаю это как угодно? Заполнить форму, используя данные таблицы

PHP Последний скрипт входа

Я хотел знать хороший и эффективный способ узнать, как давно мои пользователи вошли в систему.

В профиле пользователей я хочу, чтобы он сказал, как давно их последний вход в систему был.

Например:

Пользователь 1 Последний вход: 2 часа назад

Пользователь 2 Последний вход: 3 минуты назад

Пользователь 3 Последний вход: 2 месяца назад


Я буду хранить их последнюю регистрационную информацию в базе данных MySQL, но хочу знать, как это сделать.

Я просто понял, что Stackoverflow использует эту функцию, чтобы помочь вам понять, чего я хочу.


mysql_query("UPDATE users SET lastactivity = ".time()." WHERE id = ".$userID); 

Вот как я буду обновлять БД.

Каждый запрос на страницу просто обновляет их последнее действие.

 <?php mysql_query("UPDATE users SET lastactivity = ".time()." WHERE id = ".$userID); 

чтобы показать, когда они были в последний раз, просто выберите их поле lastactivity из базы данных и покажите его

 <?php $activity = mysql_result(mysql_query("SELECT lastactivity FROM users WHERE id = ".$userID), 0); echo "Last activity: ".relativeTime($active); 

где relativeTime() – это функция, которую я использовал:

 function relativeTime($time, $short = false){ $SECOND = 1; $MINUTE = 60 * $SECOND; $HOUR = 60 * $MINUTE; $DAY = 24 * $HOUR; $MONTH = 30 * $DAY; $before = time() - $time; if ($before < 0) { return "not yet"; } if ($short){ if ($before < 1 * $MINUTE) { return ($before <5) ? "just now" : $before . " ago"; } if ($before < 2 * $MINUTE) { return "1m ago"; } if ($before < 45 * $MINUTE) { return floor($before / 60) . "m ago"; } if ($before < 90 * $MINUTE) { return "1h ago"; } if ($before < 24 * $HOUR) { return floor($before / 60 / 60). "h ago"; } if ($before < 48 * $HOUR) { return "1d ago"; } if ($before < 30 * $DAY) { return floor($before / 60 / 60 / 24) . "d ago"; } if ($before < 12 * $MONTH) { $months = floor($before / 60 / 60 / 24 / 30); return $months <= 1 ? "1mo ago" : $months . "mo ago"; } else { $years = floor ($before / 60 / 60 / 24 / 30 / 12); return $years <= 1 ? "1y ago" : $years."y ago"; } } if ($before < 1 * $MINUTE) { return ($before <= 1) ? "just now" : $before . " seconds ago"; } if ($before < 2 * $MINUTE) { return "a minute ago"; } if ($before < 45 * $MINUTE) { return floor($before / 60) . " minutes ago"; } if ($before < 90 * $MINUTE) { return "an hour ago"; } if ($before < 24 * $HOUR) { return (floor($before / 60 / 60) == 1 ? 'about an hour' : floor($before / 60 / 60).' hours'). " ago"; } if ($before < 48 * $HOUR) { return "yesterday"; } if ($before < 30 * $DAY) { return floor($before / 60 / 60 / 24) . " days ago"; } if ($before < 12 * $MONTH) { $months = floor($before / 60 / 60 / 24 / 30); return $months <= 1 ? "one month ago" : $months . " months ago"; } else { $years = floor ($before / 60 / 60 / 24 / 30 / 12); return $years <= 1 ? "one year ago" : $years." years ago"; } return "$time"; } 

В дополнение к тому, что @Martin. сказал, вы можете получить текущую time() метку с помощью time() , а затем получить последнюю метку времени входа из базы данных и вычесть ее из текущей метки времени.

 <?php $date = strtotime("2012-03-08 16:02:35"); $now = time(); $diff = $now - $date; ?> 

… тогда $diff – разница во времени в секундах. Затем вы можете рассчитать все, что хотите.