數據庫字段php
num 記錄已經連續簽到次數ajax
times 記錄簽到的日期 格式年月日 如 20160101數據庫
PHP代碼以下session
<?php //獲取今天的日期 $today = date('Ymd'); //獲取簽到記錄 $signInfo = M('table')->field('id,num,times')->where(array('uid' => session('uid')))->find(); if($signInfo['times'] == $today){//今天已簽到過了 $this->ajaxReturn(array('info' => '今天已簽到過了', 'status' => 0)); }elseif($signInfo['times'] == date('Ymd', strtotime('-1 day'))){//昨天已簽到,連續簽處處理 if ($signInfo['num'] == 29) {//連續簽到30天,每30天清零 $num = 0;//連續簽到次數 $point = 30;//額外獎勵積分數 }elseif($signInfo['num'] == 20){//連續簽到3周 $num = $signInfo['num'] + 1; $point = 20; }elseif($signInfo['num'] == 13){//連續簽到2周 $num = $signInfo['num'] + 1; $point = 15; }elseif($signInfo['num'] == 6){//連續簽到1周 $num = $signInfo['num'] + 1; $point = 10; }else{ $num = $signInfo['num'] + 1; $point = 0; } //更新簽到記錄 $result = M('table')->save(array('uid' => session('uid'), 'num' => $num, 'times' => $today)); }else{//斷籤或未簽到過,從新計數 $point = 0; if ($signInfo['id']) {//有簽到記錄,更新記錄信息 $result = M('table')->save(array('uid' => session('uid'), 'num' => 1, 'times' => $today)); }else{//無簽到記錄,添加一條記錄 $result = M('table')->add(array('uid' => session('uid'), 'num' => 1, 'times' => $today)); } } if ($result){ $points = $point + 3;//本次簽到得到的總積分數 = 額外獎勵 + 簽到一次應得的積分數 此處爲3分 $result = M()->execute('update users set total_point=total_point+' . $points . ',now_point=now_point+' . $points . ' where uid=' . session('uid')); if($result){ $msg = '簽到成功,得到3積分'; $msg .= $point > 0 ? '<br />連續簽到' . ($num > 0 ? $num : 30) . '天,獎勵' . $point . '積分' : ''; $this->ajaxReturn(array('info' => $msg, 'status' => 1)); } } $this->ajaxReturn(array('info' => '簽到失敗', 'status' => 0));
代碼是根據ThinkPHP框架開發,在項目代碼的基礎上進行了修改,項目代碼運行正常,修改後的上述代碼沒有實際運行過,只做爲開發思路參考框架