帝国模板之家为广大用户提供专业、一站式建站服务。

网站开发

网站开发栏目,介绍前端、后台、服务器、数据库、建站工具等实用网站开发教程。

当前位置:首页 > 教程 > 网站开发 > 正文

PHP用日历记录签到功能

帝国模板之家 2020-09-02 网站开发 评论

PHP用日历记录签到功能

大多数的网站开启了签到功能,这样的好处在于,用户每天有规律的登陆一下网站,这样形成了一个很强大的粘合性,-这就是大多数网站签到功能设计的初衷,同时,我们发现,几乎很多网站都在上线这个功能。今天帝国模板之家小编给大家分享一个PHP用日历记录签到功能(该功能基于thinkphp框架实现),签到一次获取6积分,连续签到三天以上获取12积分,并用日历记录签到次数。效果图如下:

PHP用日历记录签到功能

点击签到按钮获取积分方法

<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用日历记录签到功能的全部内容,更多好用的网站功能请关注帝国模板之家

有些事,即便认为它是完美的,也可以通过再次努力推动它,来获得价值以上的东西。

已有 位小伙伴发表了看法

欢迎 发表评论

  • 匿名发表

关于

帝国cms模板

网页插件

帝国模板之家 | www.moyouyouw.cn

本站所有模板/文章除标明原创外,均来自网络转载,版权归原作者所有,如果有侵犯到您的权益,请联系站长删除,谢谢! 寻找帝国cms模板首选帝国模板之家,用心做站,上线至今广受好评,值得信赖!

  • 交流群1:帝国cms交流群1
  • 交流群2:帝国cms交流群2
在线QQ 给我留言