ホームページ >php教程 >php手册 >ThinkPHP 連続サインインの小規模なケース

ThinkPHP 連続サインインの小規模なケース

WBOY
WBOYオリジナル
2016-10-09 08:32:231415ブラウズ

Webサイトで継続チェックインできるちょっとした機能!
ウェブサイト開発をしているときに、ポイントを獲得するために継続的にサインインするメンバーに遭遇したことがありますか? たとえば、継続的にサインインするとポイントを追加するというルールがあるため、この機能を実装するときに直面することがあります。注意すべき点がいくつかあります: (1) 継続的なサインイン、回数を累積する必要があります。これには 2 つのタイムスタンプ間の判断が含まれます。 (2) 今月のサインインかどうか。もちろん、この場合、 2つのタイムスタンプ間の判定も問題は解決しましたが、この点にも注意が必要です。 (3) 連続している場合は1加算され、そうでない場合は0にクリアされます。また、以前にサインインしたことがない場合は、 、サインイン レコードが生成されます。以下にサインインを実装するためのコードを投稿します。皆さんも一緒に学び、進歩してください。
テーブル構造:
ThinkPHP 連続サインインの小規模なケース
/**継続的チェックインを実装する方法*/
パブリック関数signList(){
/**まずこのユーザーが存在するかどうかを確認します*/
$m_id = $_GET['m_id'];
$sign = D('Sign')->where(array("m_id"=>$m_id))->limit(0)->find();
/**時差がある場合は、時差を判断してチェックイン数を処理します。*/
if($sign){
/**昨日のタイムスタンプの時間範囲*/
$t = 時間();
$last_start_time = mktime(0,0,0,date("m",$t),date("d",$t)-1,date("Y",$t));
$last_end_time = mktime(23,59,59,date("m",$t),date("d",$t)-1,date("Y",$t));
/**今日のタイムスタンプの時間範囲*/
// $now_start_time = mktime(0,0,0,date("m",$t),date("d",$t),date("Y",$t));
// $now_end_time = mktime(23,59,59,date("m",$t),date("d",$t),date("Y",$t));
/**最終チェックイン時刻が昨日の時刻範囲内であるかどうかを確認する*/
if($last_start_time<$sign['time']&&$sign['time']<$last_end_time){
$da['時間'] = 時間();
$da['カウント'] = $sign['カウント']+1;
/**ここにいくつかの操作を追加して、連続して何日間サインインしたかを判断し、ポイントを追加するなどすることもできます。*/
D('Sign')->where(array("m_id"=>$m_id))->save($da);
}その他{
/**チェックイン操作に戻る*/
$da['時間'] = 時間();
$da['カウント'] = 0;
D('Sign')->where(array("m_id"=>$m_id))->save($da);
}
}その他{
$data['m_id'] = $m_id;
$data['time'] = time();
$data['sign'] = 1;
$res = D("署名")->add($data);
if($res){
/**成功した場合は戻る、またはポイントの追加などのいくつかの手順を処理する*/
}
}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。