帝国cms会员签到奖励设计思路
技术主管:一叶知秋分享
5260
帝国cms是比较成熟的cms系统,目前需要在此系统增加会员签到功能,目的是增加网站粘性。
设计思路(V1.0版)
1、数据库字段增加签到次数、签到时间、签到月份。扩展可以增加签到奖励专用字段(防止恶意操作直接进入账户余额);
2、在会员页面增加签到按钮以及展示会员当月签到次数;增加会员全勤签到按钮(根据签到次数判断,当次数达到一定数值,按钮显示,会员点击可以领取全勤奖励。)
实现代码:
<?php if($logintime>$qdtime){?> <a href="qq.php?action=qiandao&an=<?=$anqu?>" title='会员每天可以签到一次,可获得5元' style="color:#F00">点击签到</a> <?php }else{?> <a href="#" title='会员每天可以签到一次,可获得5元'>今日已签到</a> <?php }?>, <?php if($qdcs>24 && $jcqdmoth!= $loginmoth){?> <a href="qq.php?action=zqiandao&an=<?=$anqu?>" title='每月签到25次可领取全勤奖55元!'>本月已签到:<span style="color: #FF0000;"><?=$qdcs?></span>天</a> <?}else{?> <a href="#" title='每月签到25次可领取全勤奖50元! <?php if($jcqdmoth == $loginmoth) {?> 本月全勤奖金您已经领取<?}?>'>本月已签到:<span style="color: #FF0000;"><?=$qdcs?></span>天</a> <?}?>
3、签到页面,根据会员页面传来信息进行判断,更新会员签到信息。
需要注意的是,更新时需要验证当前签到的月份是否与数据库记录的月份一致,如果不一致,就说明此次签到不是当月签到,需要重置数据库中签到月份为当前月份,同时需要重置签到次数。
<?php if($_GET[action]=="qiandao"){ if($logintime !== $qdtime || $qdtime==''){ $qd_jf_add=$qd_jf_constant+$r[moneyccc]; $qdcs=$qdcs+1; $jf_sql="update {$dbtbpre}enewsmember set qdtime='".$logintime."',qdcs='".$qdcs."',logintime='".$logintime."',moneyccc=".$qd_jf_add." where userid='".$user[userid]."'"; $jfsql=$empire->query($jf_sql); if($jfsql){ if($rad==""){ $jf=$qd_jf_constant; }else{ $jf=$rad; } if($_GET[action]=="zqiandao"){ if($qdcs>=25){ if($loginmoth!==$qdmoth){ $qd_jf_add_z=$qd_jf_constant_z+$r[moneyccc]; $jf_sql_z="update {$dbtbpre}enewsmember set qdmoth='".date("m")."',moneyccc=".$qd_jf_add_z." where userid='".$user[userid]."'"; //签到记录 BakBuy($user['userid'],$user['username'],$card_no,0,$qd_jf_constant_z,0,10); $jfsql_z=$empire->query($jf_sql_z); if($jfsql_z){ if($rad_z==""){ $jf_z=$qd_jf_constant_z; }else{ $jf_z=$rad_z; } ?>