項目需要,自己寫的用戶簽到代碼,適合萌新使用,大神勿噴!
本示例沒有給用戶增加虛擬貨幣,
方法:
<?php /** *用戶簽到方法 *$user 簽到用戶ID *@return $data String */ 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=18 ;