DedeCMS会员每日登录积分功能修改教程
在DedeCMS网站会员系统中,默认的登录积分机制是基于时间间隔(如两小时)来增加积分。但许多站长希望实现更合理的每日登录积分规则:会员每天首次登录时增加一次积分,同一天内重复登录不再增加。本文将详细介绍如何修改核心文件,实现这一功能。
修改思路
实现每日登录积分的关键在于判断本次登录时间与上次登录时间是否在同一天。如果不在同一天,则增加积分;如果在同一天,则不增加。这需要获取会员上次登录的日期,并与当前日期进行比较。
具体修改步骤
打开 include/memberlogin.class.php 文件,定位到大约第370行附近。找到以下原始代码:
//登录增加积分(上一次登录时间必须大于两小时)
if(time() - $logintime > 7200 && $cfg_login_adds > 0)
{
$dsql->ExecuteNoneQuery("Update `dede_member` set `scores`=`scores`+{$cfg_login_adds} where mid='$uid' ");
}
$this->M_ID = $uid;
$this->M_LoginTime = time();
将上述代码替换为以下新代码:
//登录增加积分(每天登陆加一次积分)
$row = $dsql->GetOne("SELECT logintime FROM dede_member WHERE mid='$uid' ");
$logintime = $row['logintime'];
$timel = GetDateMk($logintime);
$now = GetDateMk(time());
if($timel!=$now)
{
$dsql->ExecuteNoneQuery("Update `dede_member` set `scores`=`scores`+{$cfg_login_adds} where mid='$uid' ");
}
$nowtime = GetDateTimeMk(time());
$logint = GetMkTime($nowtime);
$dsql->ExecuteNoneQuery("Update dede_member set logintime='$logint' where mid='$uid' ");
$this->M_ID = $uid;
$this->M_LoginTime = time();
代码说明
新代码首先从数据库中查询当前会员的上次登录时间,然后通过 GetDateMk 函数将时间戳转换为日期格式。接着获取当前时间的日期,并与上次登录日期进行比较。如果两个日期不一致,说明是不同天,则执行积分增加操作。最后,无论是否增加积分,都会更新会员的登录时间为当前时间,确保下次登录时能正确判断。
注意事项
修改前请务必备份原文件,以防操作失误导致网站异常。同时,请确保 $cfg_login_adds 变量已在系统后台正确设置,该变量控制每次登录增加的积分数值。修改完成后,保存文件并测试会员登录功能,验证每日积分是否正常增加。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
