PHP Last登录脚本 [英] PHP Last log in script
问题描述
我想知道一种有效且有效的方法,以判断用户上次登录的时间.
I wanted to know a good and efficient way to be able to tell how long ago my users last logged in.
在用户个人资料上,我想说一下他们的上一次登录是多久之前的.
On the users profile I want it for say how long ago their last log in was.
例如:
用户1 上次登录:2小时前
User 1 Last login: 2 hours ago
用户2 上次登录时间:3分钟前
User 2 Last login: 3 minutes ago
用户3 上次登录时间:2个月前
User 3 Last login: 2 months ago
我会将他们的上次登录信息保存在MySQL数据库中,但想知道如何执行脚本.
I will keep their last login information in a MySQL database but want to know how to do the script.
我刚刚意识到Stackoverflow使用了此功能,因此可以帮助您了解我想要的内容.
I just realized that Stackoverflow uses this feature, so that can help you understand what I want.
mysql_query("UPDATE users SET lastactivity = ".time()." WHERE id = ".$userID);
这就是我更新数据库的方式.
This is how I will update the DB.
推荐答案
每个页面请求仅更新其上一个活动.
Each page request just update their last activity.
<?php
mysql_query("UPDATE users SET lastactivity = ".time()." WHERE id = ".$userID);
要显示他们上次上网的时间,只需从数据库中选择其lastactivity字段并显示
to show when they were last online, just select their lastactivity field from database and show it
<?php
$activity = mysql_result(mysql_query("SELECT lastactivity FROM users WHERE id = ".$userID), 0);
echo "Last activity: ".relativeTime($active);
其中relativeTime()
是我一直在使用的功能:
where relativeTime()
is function I've been using:
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";
}
这篇关于PHP Last登录脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!