首页 > php教程 > php手册 > 正文

自用thinkphp签到送积分方法

php中文网
发布: 2016-10-22 00:00:28
原创
2215人浏览过

自用thinkphp签到送积分方法,不含前台展示,只判断了今日有没有签到,如需要可自行添加
1、先附上表结构,自用的]/**<br>  * tableName = 前缀_user_sing_in<br>  * id<br>  * uid<br>  * username<br>  * create_time int 10 签到时间<br>  * sign_in_year  签到,年<br>  * sign_in_month 签到,月<br>  * sign_in_day  签到,日<br>  * get_integral 签到获得积分数<br>  * sign_in_con_days  连续签到天数 default=1<br>  */2、签到实现方法及类<?php <br /> /**<br>  * Created by PhpStorm.<br>  * Author: 醉丶春风<br>  * Description: 本类必须登录,用户积分兑换,签到<br>  * Date: 2016/10/19<br>  * Time: 16:02<br>  */<br> namespace Home\Controller;<br> //use Think\Controller;<br> class IntegralController extends HomeController<br> {<br>    private $uid = null;<br>    private $where = array();<br>    /**<br>     * 构造方法<br>     * 自动加载uid,初始化uid条件<br>     */<br>    public function _initialize()<br>    {<br>       $this -&gt; uid = $this -&gt; check_login();<br>       $this -&gt; where['uid'] = $this-&gt;uid;<br>    }<br>  <br>    /**<br>     * 签到获得积分方法<br>     */<br>    public function sign_in()<br>    {<br>       $get_integral = 2; //签到赠送积分<br>       $get_added_integral = 5; //连续签到N天额外赠送积分<br>       $continuous_day = 7; //连续签到多少天可领额外积分<br>       //**************************************************************<br>       $start_time = strtotime(date('Y-m-d'));//今天凌晨的时间戳<br>       $year = date("Y"); //今天-年<br>       $month = date("m"); //今天-月<br>       $day = date("d"); //今天-日<br>       //**************************************************************<br>       $yesterday = strtotime('-1 day'); //昨天的时间戳基数<br>       $yesterday_year = date('Y',$yesterday); //昨天-年<br>       $yesterday_month = date('m',$yesterday); //昨天-月<br>       $yesterday_day = date('d',$yesterday); //昨天-日<br>       //**************************************************************<br>       //先验证今天有没有签到过<br>       $Model = M('user_sign_in');<br>       $record_count = $Model -&gt; where(array('uid'=&gt;$this-&gt;uid,'create_time'=&gt;array('EGT',$start_time))) -&gt; count();<br>       if($record_count)<br>          $this -&gt; error('今日已签到');<br>       //**************************************************************<br>       //准备好插入数据<br>       $data = array(<br>          'uid' =&gt; $this -&gt; uid,<br>          'sign_in_year' =&gt; $year, //年<br>          'sign_in_month' =&gt; $month,//月<br>          'sign_in_day' =&gt; $day,//日<br>          'username' =&gt; $_SESSION['userInfo']['username'],<br>          'get_integral' =&gt; $get_integral, //默认签到获得积分<br>          'create_time' =&gt; time(),<br>       );<br>       $msg = "签到成功,获得{$get_integral}积分";<br>       //**************************************************************<br>       //查询昨天的签到纪录<br>       $where = array(<br>          'uid' =&gt; $this -&gt; uid,<br>          'sign_in_year' =&gt; $yesterday_year,<br>          'sign_in_month' =&gt; $yesterday_month,<br>          'sign_in_day' =&gt; $yesterday_day,<br>       );<br>       $yesterday_record = $Model -&gt; where($where) -&gt; find();<br>       //有,设置连续签到天数加1,继续判断连续签到有没有达标<br>       if($yesterday_record){<br>          //设置连续签到天数加1<br>          $data['sign_in_con_days'] = $yesterday_record['sign_in_con_days'] +1;<br>          if($yesterday_record['sign_in_con_days'] &gt;= $continuous_day){<br>             //已 经达到连续签到要求,加送额外积分<br>             $data['get_integral'] = $get_integral + $get_added_integral;<br>             $msg = "签到成功,获得{$get_integral}积分,连续签到{$continuous_day}天额外获得{$get_added_integral}积分";<br>          }<br>       }<br>       //**************************************************************<br>       //昨日没有签到,不进行逻辑处理,执行签到送积分,默认连续签到天数为1<br>       if($Model -&gt; add($data)){<br>          //用户积分增加<br>          M('user') -&gt; where($this-&gt;where) -&gt; setInc('integral',$data['get_integral']);<br>          $this -&gt; success($msg,U('Index/index'),3);<br>       }<br>       $this -&gt; error('签到失败');<br>    }<br>  <br> }自己使用的,调用的时候直接调用 sign_in()方法即可

验证今日是否已签到方法
/**<br>  * 登录导航<br>  * 验证今日是否已签到<br>  */<br> public function login_nav(){<br>    $start_time = strtotime(date('Y-m-d'));//今天凌晨的时间戳<br>    $is_sign_in = 0;//初始化未签到<br>    //先验证今天有没有签到过<br>    $Model = M('user_sign_in');<br>    //签到纪录<br>    $sign_in_record = $Model -&gt; where(array('uid'=&gt;$_SESSION['userInfo']['id'],'create_time'=&gt;array('EGT',$start_time))) -&gt; find();<br>    if($sign_in_record){<br>       $is_sign_in = 1;<br>       //根据需要传入 $sign_in_record 或连续签到天数<br>       $this -&gt; assign('sign_in_con_days',$sign_in_record['sign_in_con_days']);<br>    }<br>    $this -&gt; assign('is_sign_in',$is_sign_in);<br>    //自用<br>    $this-&gt;display('Widget/login_nav');<br> }因为我的 error 和 success 方法中增加了 exit; 所以 上述代码中 直接 $this -> error('错误');下面可不用终止代码,大家在用的时候要考虑到自己的代码是否增加 exit 或 die;
也写在我的博客里面了
http://www.xstnet.com/article-79.html
http://www.xstnet.com/article-79.html
自己使用没问题

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号