Home  >  Article  >  php教程  >  How to get points by signing in with thinkphp for your own use

How to get points by signing in with thinkphp for your own use

WBOY
WBOYOriginal
2016-10-22 00:00:281995browse

Self-use thinkphp sign-in method to get points, which does not include front-end display. It only determines whether there is a sign-in today. You can add it yourself if necessary
1. Attach the table structure first, for your own use]/**<br> * tableName = prefix_user_sing_in<br> * id<br> * uid<br> * username<br> * create_time int 10 Check-in time<br> * sign_in_year Sign in, year<br> * sign_in_month Sign in, month<br> * sign_in_day Sign in, day<br> * get_integral Number of points earned by signing in<br> * sign_in_con_days Number of consecutive sign-in days default=1<br> ​*/2. Sign-in implementation methods and classes<?php<br /> /**<br /> * Created by PhpStorm.<br /> *Author: Drunk, Spring Breeze<br /> * Description: This category requires logging in, redeeming user points, and signing in<br /> * Date: 2016/10/19<br /> * Time: 16:02<br /> ​*/<br /> namespace HomeController;<br /> //use ThinkController;<br /> class IntegralController extends HomeController<br /> {<br /> Private $uid = null;<br /> private $where = array();<br /> /**<br /> *Construction method<br /> * Automatically load uid and initialize uid conditions<br /> ​​*/<br /> Public function _initialize()<br /> {<br /> $this -> uid = $this -> check_login();<br>         $this -> where['uid'] = $this->uid;<br> }<br> <br> /**<br> *How to get points by signing in<br> ​​*/<br> public function sign_in()<br> {<br>         $get_integral = 2; //Sign in and get points for free <br> $get_added_integral = 5; //Sign in for N consecutive days and get extra points<br>         $continuous_day = 7; //How many consecutive days can you sign in to receive extra points<br> //************************************************ ******************<br>        $start_time = strtotime(date('Y-m-d'));//Today’s early morning timestamp<br>        $year = date("Y"); //Today-year<br> $month = date("m"); //Today-month<br>        $day = date("d"); //Today-day<br> //************************************************ ******************<br>        $yesterday = strtotime('-1 day'); //Yesterday’s timestamp base<br> $yesterday_year = date('Y',$yesterday); //Yesterday-year<br> $yesterday_month = date('m',$yesterday); //Yesterday-month<br> $yesterday_day = date('d',$yesterday); //Yesterday-day<br> //************************************************ ******************<br> //Verify first whether you have checked in today<br> ​​​$Model = M('user_sign_in');<br> $record_count = $Model -> where(array('uid'=>$this->uid,'create_time'=>array('EGT',$start_time))) -> count();<br> If($record_count)<br>            $this -> error('Signed in today');<br> //************************************************ ******************<br> //Ready to insert data<br> $data = array(<br> ‘uid’ => $this -> uid,<br> ‘sign_in_year’ => $year, //year<br> ‘sign_in_month’ => $month,//month<br>           'sign_in_day' => $day,//Day<br>          'username' => $_SESSION['userInfo']['username'],<br>             'get_integral' => $get_integral, //By default, you will get points by signing in<br>           'create_time' => time(),<br> );<br>          $msg = "Sign in successfully, get {$get_integral} points";<br>          //***************************************************** **********<br> //Check yesterday’s check-in record<br> $where = array(<br> ‘uid’ => $this -> uid,<br>           'sign_in_year' => $yesterday_year,<br> ‘sign_in_month’ => $yesterday_month,<br> ‘sign_in_day’ => $yesterday_day,<br> );<br> $yesterday_record = $Model -> where($where) -> find();<br> //Yes, set the number of consecutive check-in days plus 1, and continue to judge whether the continuous check-in has reached the standard<br> If($yesterday_record){<br> //Set the number of consecutive check-in days plus 1<br>          $data['sign_in_con_days'] = $yesterday_record['sign_in_con_days'] +1;<br> If($yesterday_record['sign_in_con_days'] >= $continuous_day){<br>                   //Have reached the requirement of continuous sign-in, and get extra points<br>              $data['get_integral'] = $get_integral + $get_added_integral;<br>                                                                                                                                                                                                                        Get {$get_integral} points, get {$get_integral} points, and sign in for {$continuous_day} days to get extra {$get_added_integral} points"; <br>          }<br>       }<br> //************************************************ ******************<br> // Yesterday did not sign in, did not conduct logical processing, executed the sign -in delivery points, the number of continuous sign -in days by default was 1<br> If($Model -> add($data)){<br> //User points increase<br> M('user') -> where($this->where) -> setInc('integral',$data['get_integral']);<br>            $this -> success($msg,U('Index/index'),3);<br>       }<br>         $this -> error('Sign-in failed');<br> }<br> <br> }For your own use, just call the sign_in() method directly when calling

How to verify whether you have signed in today
/**<br> * Login navigation<br> * Verify whether you have signed in today<br> ​*/<br> public function login_nav(){<br> $start_time = strtotime(date('Y-m-d'));//Today’s early morning timestamp<br> $is_sign_in = 0; //Initialization not signed in<br> //Verify first whether you have checked in today<br> $Model = M('user_sign_in');<br> //Sign-in record<br> $sign_in_record = $Model -> where(array('uid'=>$_SESSION['userInfo']['id'],'create_time'=>array('EGT',$start_time))) -&gt ;find();<br> if($sign_in_record){<br>        $is_sign_in = 1;<br> //Pass in $sign_in_record or the number of consecutive sign-in days as needed<br>         $this -> assign('sign_in_con_days',$sign_in_record['sign_in_con_days']);<br>}<br> $this -> assign('is_sign_in',$is_sign_in);<br> //For personal use<br> $this->display('Widget/login_nav');<br> }Because I added exit; in my error and success methods, so in the above code, directly $this -> error('error'); There is no need to terminate the code below. When using it, everyone should consider whether their own code has increased. exit or die;
I also wrote it in my blog
http://www.xstnet.com/article-79.html
http://www.xstnet.com/article-79.html
No problem if you use it yourself

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn