Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查用户是否已在过去24小时内登录_Php_Time_Timestamp - Fatal编程技术网

Php 检查用户是否已在过去24小时内登录

Php 检查用户是否已在过去24小时内登录,php,time,timestamp,Php,Time,Timestamp,我目前正在我的网站上开发一个用户奖励系统,例如用给定的虚拟货币点数奖励活跃用户 我在想办法完成这件事时遇到了问题 我知道我必须比较时间戳,但我不知道何时应该创建基本时间戳,我将使用它作为计算的基础。我想我可能没有正确地解释我的问题,所以我会用一种简短的方式说:如何检查用户是否在过去24小时内登录。何时创建以创建我将用于计算的时间戳 提前感谢您的所有回答 我的用户表中有最后一列活动,您只需在每次用户登录时存储时间戳即可。但是如果你想检查他们是否在线,不管他们是否必须登录,你必须在每个页面上实现时间

我目前正在我的网站上开发一个用户奖励系统,例如用给定的虚拟货币点数奖励活跃用户

我在想办法完成这件事时遇到了问题

我知道我必须比较时间戳,但我不知道何时应该创建基本时间戳,我将使用它作为计算的基础。我想我可能没有正确地解释我的问题,所以我会用一种简短的方式说:如何检查用户是否在过去24小时内登录。何时创建以创建我将用于计算的时间戳

提前感谢您的所有回答


我的用户表中有最后一列活动,您只需在每次用户登录时存储时间戳即可。但是如果你想检查他们是否在线,不管他们是否必须登录,你必须在每个页面上实现时间戳的更新。您还应该将上次更新时间存储在用户的cookie中,这样您就不会在每次页面加载时更新,而是每十分钟更新一次。如果不知道您的应用程序结构,很难具体说明,但有时会在用户表中更新“last_activity”或类似字段。然后检查最后的_活动值是否早于24小时


添加一些逻辑,使最后一个_活动仅每隔15分钟左右更新一次,并且您不会在每次页面加载时进行额外的DB write操作。

我只想用一些简写来描述这一点:

OnRegister将在首次登录时取消即时积分:

user->lastPoints = now();
在线登录:

if (user->lastPoints - now > 24h)
{
    if (user->lastPoints - now < 48h)
    {
        user->rewardPoints();
    }
    user->lastPoints = now();
}

希望这就是您要搜索的内容。

在用户表中添加一个时间列,称之为lastLogin。比较用户每次登录的时间。完成比较后,您可以更新lastLogin.Ha!我们在几乎完全相同的时间写了几乎相同的东西嘿,谢谢汤姆和你快速而有用的回答!有几件事我不明白:在我将最后一个活动时间戳存储在数据库中之后,如何检查一天是否过去了?我不认为我是对的,但是如果他经常刷新页面访问,时间戳总是少于1天。这不是你想要的吗?要了解用户是否在过去24小时内登录?好的,如果检查显示10秒,或13分钟,或23小时59分钟,那么用户在过去24小时内已登录。@TunaMaxx:我想他想为连续的每日登录/活动奖励分数。因此,如果你只是一分钟刷新一百次页面,即使用户在过去24小时内在技术上处于活动状态,他也不想奖励一百次分数。因此,你每天检查一次,查看用户上次的活动是在什么时候进行的。如果时间少于24小时,则将“条纹”增加一天。如果时间超过24小时,你就可以打破连续记录,重新开始。你所关心的是活动会话之间经过的时间,而不是会话的数量,对吗?是的,是经过的时间。但我的目标是奖励活动,而不是连胜。尽管如此,这还是很有帮助的,因为我可能会在将来实现这一点:但是如果他不断刷新页面访问,时间戳将始终少于1天?不,你只需在if中更新lastPoints,例如,如果距离上次积分时间>24小时。谢谢,我会尝试你的方法,我会选择这个答案作为接受。非常感谢。