项目需要,自己写的用户签到代码,适合萌新使用,大神勿喷!本示例没有给用户增加虚拟货币
function sign($user = ''){ $seedlings = 20; //第一次签到赠送树苗数量 $seedling3 = 3; //连续签到天数小于等于3天赠送的树苗数量 $seedling8 = 8; //连续签到天数大于8天赠送的树苗数量 $seedling15 = 12; //连续签到天数大于15天赠送的树苗数量 $seedling30 = 18; //连续签到天数大于30天赠送的树苗数量 $sign = M("signin");//实例化模型 $userSign = $sign -> where(array("user_id" => $user)) -> find();//用户签到数据 $signId = $userSign['id']; //用户在签到表的id $tabletoday = $userSign['today_signin_time']; //签到表里的今日签到时间 不等效与今日时间 $today = date("Y-m-d",time());//今日签到时间 $lastday = $userSign['last_signin_time']; //上次签到时间 $st_tabletoday = strtotime($tabletoday);//签到表里的今日签到时间 不等效与今日时间 $st_today = strtotime(date("Y-m-d",time()));//序列化今日签到时间 $st_lastday = strtotime($userSign['last_signin_time']); //序列化上次签到时间 empty($tabletoday) ? $tabletoday = date("Y-m-d",strtotime("-1 day")) : $tabletoday = $tabletoday; //如果为空则是第一次签到,默认上一次签到为昨天 if(!$userSign){//首次签到 $signArr = array( 'user_id' => $user, 'last_signin_time' => $tabletoday, 'today_signin_time' => $today, 'continue_day' => 1, 'seedlings' => $seedlings //第一次签到增送树苗数量 ); $res = $sign -> add($signArr); if($res){ $data = "首次签到获得了<i class='layui-icon'></i> ".$seedlings."奖励"; } }else if(($st_today - $st_tabletoday) / 86400 == 1){//(今日签到时间-上次签到时间) / 86400 == 1;则为连续签到 if($userSign['continue_day'] <= 3){ $seed = $seedling3; }else if($userSign['continue_day'] > 8){ $seed = $seedling8; }else if($userSign['continue_day'] > 15){ $seed = $seedling15; }else if($userSign['continue_day'] > 30){ $seed = $seedling30; } $signArr = array( 'id' => $signId, 'last_signin_time' => $tabletoday, 'today_signin_time' => $today, 'seedlings' => $seed ); $res = $sign -> save($signArr); if($res){ $sign -> where(array("id" => $signId)) -> setInc("continue_day"); $data = "签到成功,获得了<i class='layui-icon'></i> ".$seed."奖励"; } }else if(($st_today - $st_tabletoday) / 86400 > 1){//(今日签到时间-上次签到时间) / 86400 > 1;连续签到中断 if($userSign['continue_day'] <= 3){ $seed = $seedling3; }else if($userSign['continue_day'] > 8){ $seed = $seedling8; }else if($userSign['continue_day'] > 15){ $seed = $seedling15; }else if($userSign['continue_day'] > 30){ $seed = $seedling30; } $signArr = array( 'id' => $signId, 'last_signin_time' => $tabletoday, 'today_signin_time' => $today, 'continue_day' => 1, 'seedlings' => $seed ); $res = $sign -> save($signArr); if($res){ $data = "签到成功,获得了<i class='layui-icon'></i> ".$seed."奖励,上次签到时间:!".$tabletoday.",本次签到时间:".$today."连续签到中断了。"; } }else{ $data = "今日已签到!"; } return $data; }
数据表:
--
-- 表的结构 `tr_signin`
--
CREATE TABLE IF NOT EXISTS `tr_signin` ( `id` int(255) NOT NULL AUTO_INCREMENT COMMENT 'id', `user_id` int(255) NOT NULL COMMENT '用户id', `last_signin_time` varchar(24) NOT NULL COMMENT '上次签到', `today_signin_time` varchar(24) NOT NULL COMMENT '今日签到', `continue_day` int(8) NOT NULL COMMENT '连续签到天数', `seedlings` int(8) NOT NULL COMMENT '奖励树苗', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;