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