ポイントを取得するための 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)) -> ;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
自分で使う分には問題ありません