自分用に thinkphp でサインインしてポイントを獲得する方法

WBOY
リリース: 2016-10-22 00:00:28
オリジナル
1993 人が閲覧しました

ポイントを取得するための thinkphp サインイン メソッドは、今日サインインがあるかどうかを判断するだけです。必要に応じて自分で追加できます。1. 独自の使用のために、最初にテーブル構造をアタッチします]/**<br> * tableName = prefix_user_sing_in<br> *ID<br> *uid<br> * ユーザー名<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 連続サインイン日数 デフォルト=1<br> ​*/2. サインイン実装メソッドとクラス<?php<br /> /**<br /> * PhpStorm によって作成されました。<br /> ※作者:酔っ払い、春風<br /> * 説明: このカテゴリにはログイン、ユーザーポイントの引き換え、サインインが必要です<br /> * 日付: 2016/10/19<br /> * 時間: 16:02<br /> ​*/<br /> 名前空間 HomeController;<br /> // ThinkController を使用します;<br /> IntegralController クラスは HomeController を拡張します<br /> {<br /> プライベート $uid = null;<br /> プライベート $where = array();<br /> /**<br /> *施工方法<br /> * uidを自動的に読み込み、uid条件を初期化します<br /> ​​*/<br /> パブリック関数 _initialize()<br /> {<br /> $this -> uid = $this -> $this -> where['uid'] = $this->uid;<br> }<br> <br> /**<br> ※ログインによるポイント獲得方法<br> ​​*/<br> パブリック関数sign_in()<br> {<br> $get_integral = 2 //サインインして無料でポイントをゲット<br>; $get_added_integral = 5 //N 日間連続でログインすると追加ポイントを獲得できます<br> $continuous_day = 7; // 追加のポイントを獲得するには、連続して何日間ログインできますか? //*********************************************** ******************<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 -> where(array('uid'=>$this->uid,'create_time'=>array('EGT',$start_time))) -> If($record_count)<br> $this -> error('今日サインインしました');<br> //*********************************************** ******************<br> //データを挿入する準備ができました<br> $data = 配列(<br> 「uid」 => $this -> ‘sign_in_year’ => $year, //year<br> 「sign_in_month」 => $month,//month<br> ‘sign_in_day’ => $day,//Day<br>'ユーザー名' => $_SESSION['ユーザー情報']['ユーザー名'],<br>; 'get_integral' => $get_integral, //デフォルトでは、サインインすることでポイントを獲得できます<br> 'create_time' => time(),<br> );<br> $msg = "サインインに成功しました。{$get_integral} ポイントを獲得しました";<br> //*************************************************** * **********<br> // 昨日のチェックイン記録を確認してください<br> $where = 配列(<br> 「uid」 => $this -> 'sign_in_year' => $yesterday_year,<br>; 「sign_in_month」 => $yesterday_month,<br> 「sign_in_day」=> $yesterday_day,<br> );<br> $yesterday_record = $Model -> where($where) -> //はい、連続チェックイン日数+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'] >= $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 -> add($data)){<br> //ユーザーポイントが増加します<br> M('user') -> where($this->where) -> setInc('integral',$data['get_integral']);<br> $this -> success($msg,U('インデックス/インデックス'),3);<br> }<br> $this -> エラー('サインインに失敗しました');<br> }<br> <br> }<br><br>自分で使用する場合は、呼び出し時にsign_in()メソッドを直接呼び出してください 今日サインインしたかどうかを確認する方法

/**
* ログインナビゲーション * 今日サインインしたかどうかを確認してください<br> ​*/<br> パブリック関数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 -> 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> //必要に応じて $sign_in_record または連続サインイン日数を渡します<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> //個人使用用<br> $this->display('ウィジェット/login_nav');<br> }エラーメソッドと成功メソッドに exit; を追加したため、上記のコードでは、直接 $this -> error('error'); これを使用する場合は、誰もが考慮する必要があります。自分のコードが終了するか死ぬか;
ブログにも書きました
http://www.xstnet.com/article-79.html
http://www.xstnet.com/article-79.html
自分で使う分には問題ありません

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート