网站开发栏目,介绍前端、后台、服务器、数据库、建站工具等实用网站开发教程。
大多数的网站开启了签到功能,这样的好处在于,用户每天有规律的登陆一下网站,这样形成了一个很强大的粘合性,-这就是大多数网站签到功能设计的初衷,同时,我们发现,几乎很多网站都在上线这个功能。今天帝国模板之家小编给大家分享一个PHP用日历记录签到功能(该功能基于thinkphp框架实现),签到一次获取6积分,连续签到三天以上获取12积分,并用日历记录签到次数。效果图如下:
点击签到按钮获取积分方法
<a id="btn_not_sign" onclick="sign_day($(this))">签到领取</a>
function sign_day(obj) {
$.post("Ajax/sign_day", {}, function(data) {
if (data.code == 200) {
layer.msg(data.result);
$("#sign_days").text(data.days);
$("#btn_not_sign").hide();
$("#btn_has_sign").css({"display": "block"});
$('.today').addClass("isSigned");
$("#sign_tip").html(data.sign_tip);
} else {
layer.msg(data.result);
}
}, "json")
}
每日签到方法
public function sign_day() {
$data['addtime'] = strtotime(date("Y-m-d 00:00:00"));
$data['uid'] = getUserid();//改成你自己的当前uid
$yesterday_start = $data['addtime'] - 3600 * 24;
$yesterday_end = $data['addtime'] - 1;
$yesterday_info = M('sign')->field("num")->where("addtime between " . $yesterday_start . " AND " . $yesterday_end . " AND uid = " . $data['uid'] . "")->find();
$data['num'] = $yesterday_info['num'] > 0 ? $yesterday_info['num'] + 1 : 1; //已连续签到
$info = M('sign')->field("id")->where("addtime = " . $data['addtime'] . " AND uid = " . $data['uid'] . "")->find();
if (empty($info)) {
$data['points'] = $data['num'] >= 4 ? 12 : 6;//连续签到3天以上获取6积分
$lastid = M('sign')->add($data);
if ($lastid > 0) {
$sign_info = getSignTip();
$sign_tip = $sign_info['tip'];
echo json_encode(array("code" => 200, "result" => "连续签到" . $data['num'] . "天奖励" . $data['points'] . "积分", "days" => $data['num'], "points" => $data['points'], "sign_tip" => $sign_tip));
}
} else {
getJsonExit('has_sign', "今日已签到");
}
}
签到表
CREATE TABLE IF NOT EXISTS `mall_sign` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(11) NOT NULL,
`points` int(6) NOT NULL COMMENT '签到积分',
`num` int(8) NOT NULL DEFAULT '0' COMMENT '连续签到次数',
`addtime` int(10) NOT NULL COMMENT '签到时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
--
-- 转存表中的数据 `mall_sign`
--
INSERT INTO `mall_sign` (`id`, `uid`, `points`, `num`, `addtime`) VALUES
(1, 1, 6, 1, 1502985600),
(2, 1, 6, 2, 1503072000),
(3, 1, 6, 3, 1503158400);
以上就是PHP用日历记录签到功能的全部内容,更多好用的网站功能请关注帝国模板之家。
转载请注明来源:PHP用日历记录签到功能
本文永久链接地址:https://www.moyouyouw.cn/code/414.html
郑重声明:本站所有主题/文章除标明原创外,均来自网络转载,版权归原作者所有,如果有侵犯到您的权益,请联系本站删除,谢谢!我们不承担任何技术及版权问题,且不对任何资源负法律责任。
售价: 399 146 ℃ 0 评论
售价: 399 126 ℃ 0 评论
售价: 399 93 ℃ 0 评论
已有 位小伙伴发表了看法
欢迎 你 发表评论