ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して、ユーザーがその日に初めてログインしたかどうかを判断します

PHP を使用して、ユーザーがその日に初めてログインしたかどうかを判断します

PHP中文网
PHP中文网オリジナル
2017-03-23 13:48:513024ブラウズ

はじめに

私は少し前にプロジェクトに取り組んでいたのですが、毎日初回ログイン時に自動的にポイントを付与するように依頼されました。
サインインしてもポイントがもらえず、数秒落ち込んでいました。
百度でしばらく検索してもダメでしたが、悩んだ末にこの方法を思いつきました。
言い換えれば、ポイントは黙って与えられます。他の人は自分のポイントを確認するときにのみこのことを知り、そうでなければ知りません。

でたらめ

アプリのユーザーインターフェースをクリックするたびにログインする必要があるため、これは毎日初回ログインかどうかを判断するだけで済みます。ログイン時。
しかし、言うは易く行うは難しということもあります。どうすればわかりますか?

users

データベースにクエリを実行することで、データベースにフィールド

last_login

があることを静かに知りました。記録されるのは、各ユーザーのログイン時刻のグリニッジ標準時のタイムスタンプです。

グリニッジ標準時

グリニッジ標準時(旧訳グリニッジ標準時またはグリニッジ標準時、英語: Greenwich) 平均 時間 (GMT) は、イギリスのロンドン郊外にある王立グリニッジ天文台の標準時を指します。これは、本初子午線がそこを通過する経度で定義されているためです。 1924 年 2 月 5 日以来、グリニッジ天文台は時刻調整情報を 1 時間ごとに世界に送信してきました。


タイムスタンプ

タイムスタンプ (タイムスタンプ) は通常、特定の瞬間を一意に識別する一連の文字です。デジタル タイムスタンプ テクノロジは、デジタル署名テクノロジの一種です。

そのため、ログインしている限り、最初に最後のタイムスタンプ (この時点ではデータは変更されていません) をクエリして記録し、次にタイムスタンプを最新のものに変更して記録し、2 つのタイムスタンプを比較します。ここでは、

getdate()

function


getdate()

getdate() 関数を使用して、日付/時刻情報を取得します。

PHP を使用して、ユーザーがその日に初めてログインしたかどうかを判断します

実装

上記で多くのことを述べましたが、以下にコードを投稿するだけです。

このコードはログイン関数に配置されます。
$user_idが決まっているとすると、次のメソッドで

/*查询到上一次登陆的last_login*/
    $sql = "SELECT last_login FROM users
            WHERE user_id = '$user_id'";

    /*获取上一次登录的格林威治时间的时间戳*/
    $last_login_old = $GLOBALS['db']->getOne($sql);

    /*获得上一次登陆日期*/
    $last_login_date_old = getdate($last_login_old);

    /*更新用户最后一次登陆时间last_login*/    
    $sql = "UPDATE users SET last_login = '" .gmtime(). "'
            WHERE user_id = '$user_id'";

    /*执行UPDATE*/
    $GLOBALS['db']->query($sql);

    /*查询到最新的登陆的格林威治时间的时间戳*/
    $last_login_new = gmtime();

    /*获得最新日期*/
    $last_login_date_new = getdate($last_login_new);

    /*进行比较,yday是一年的第几天*/
    /*若出现不等于的情况,就说明是当天第一次登陆*/
    if($last_login_date_old['year'] != $last_login_date_new['year'] ||
            $last_login_date_old['yday'] != $last_login_date_new['yday'])
    {
        /*判断成功,doSomething*/
    }

この関数は

 /**
     * 获得当前格林威治时间的时间戳
     * @return  integer
     */
    function gmtime()
    {
        return (time() - date('Z'));
    }

をサポートするためにも必要です関連記事:

ユーザーが最初のページに入ったかどうかを判断する方法について時間?

PHP Web サイトを使用してユーザーが携帯電話からアクセスしているかどうかを確認する方法

PHP を使用してユーザーが WeChat 公開アカウントをフォローしているかどうかを確認する方法

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