连续签到中断?B2主题历史遗留bug修复方案

受影响主题:2.4.x到2.5.1版本;影响程度:轻微;问题描述:用户无法连续签到,每天签到都显示1次。

今天在群里收到@瞄次元 的提问,说主题签到续不了,第二天签到不加天数一直都是一天,其他小伙伴也表示遇到同样的问题。

本着春哥的bug,就是我的bug,帮春哥解除烦恼也是自己学习提升的机会,尝试看下代码看看能不能找到原因。

我们首先打开签到页面:/mission/today,打开F12,点击签到,我们找到api:userMission

根据接口反查,我们找到签到的功能函数

function user_mission()
{
...
//连续签到
$mission_always = get_user_meta($user_id,'b2_mission_always_date',true);
if(!$mission_always){
	update_user_meta($user_id,'b2_mission_always_date',current_time('Y-m-d H:i:s'));
	update_user_meta($user_id,'b2_mission_always_count',1);
}else{
	if((int)((strtotime(current_time('Y-m-d')) - strtotime(substr($mission_always,0,10)))/86400) === 1){
		$count = (int)get_user_meta($user_id,'b2_mission_always_count',true);
		update_user_meta($user_id,'b2_mission_always_count',$count+1);
		update_user_meta($user_id,'b2_mission_always_date',current_time('Y-m-d H:i:s'));
	}
}
$arr = array(
	'date'=>current_time('Y-m-d H:i:s'),
	'credit'=>$credit
);
update_user_meta($user_id,'b2_mission_today',$arr['date']);
update_user_meta($user_id,'b2_mission_credit',$arr['credit']);
}

通过代码我们可以知道:

  • b2_mission_always_count 代表连续签到次数
  • b2_mission_always_date 代表签到日期
  • b2_mission_today 代表今天签到的日期
  • b2_mission_credit 代表签到奖励的积分

我们到数据库,一一核对查一下这些字段看看是不是一致

发现结果除了b2_mission_always_date,其他都是一致的,那么找到问题所在了。

日期是有,但不是今天的,是10月1号的,我们仔细看下这个判断

if((int)((strtotime(current_time('Y-m-d')) - strtotime(substr($mission_always,0,10)))/86400) === 1)

$mission_always 值是 ‘2020-10-20 00:44:42’,取出前10位,也就是得到年月日部分与当前日期也就今天的年月日相减,再除以86400,意思就是,取时间差,单位是,=== 1,就是相差时间是1天的情况下。

这是连续签到的判断逻辑,看上去基本没任何问题,但是为什么会出现无法连续的情况呢?我们再仔细看一下代码细节,明白了,是一个逻辑上的小疏忽

当时间差在1天的情况下,连续签到,这个逻辑没问题,但是如果中断签到,第一天签到,第二天中断,第三条签到,那么等到第四天签到,这里的判断就有问题了,还是以第一天签到的时间,来做对比时间差的判断,能看懂没有?

修复办法:

隐藏内容,您需要满足以下条件方可查看
End
其实代码很简单,我们只需要补上一个else即可,但虽然修复简单,可要去理解整个代码写的逻辑和思路,恰恰是我们需要学习的过程。

如果有帮到你理解,欢迎打赏支持,如果你遇到其他B2主题的BUG,在春哥未能及时修复的情况下,不妨试着联系雕哥。

下载权限

查看
  • 免费下载
    评论后下载
    登录后下载

  • {{attr.name}}:
您当前的等级为
您有每天免费下载所有资源次的特权,今日剩余 已取得下载权限

人已赞赏
雕技术

如何本地调试未激活的B2主题?

2020-10-19 13:32:53

雕技术

百度云加速的BUG导致B2主题商品图片不显示

2020-10-26 17:48:34

免责声明本文中提到的资源均来自于互联网,仅供个人学习交流,若您喜欢本文可附上原文链接随意转载。
版权人申诉:我要申诉
27 条回复 A文章作者 M管理员
  1. 学习一下,谢谢分享

  2. 感谢雕哥分享

  3. 妈妈我上电视了

  4. 感谢雕哥分享

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索