通過PHP判斷使用者為當天第一次登陸

來源:互聯網
上載者:User
前言

前段時間在做一個項目,人家要求每天第一次登陸時自動送積分。
居然不是簽到送積分,我鬱悶了幾秒鐘。
在百度了一會無果後,我思前想後終於想出這種方法。
也就是說,積分是默默送的,當別人查看積分時才知道有這回事,不然不知道。

扯皮

由於每次那個APP點開使用者介面都需要登陸,所以這就好辦了,我只需要在登陸的時候順便判斷是不是每天第一次登陸就行。
但是有些事說起來比做起來簡單。怎麼才能判斷出來呢。
通過查詢

users

資料庫,我默默的瞭解到資料庫中有

last_login

這個欄位。記錄的是使用者每次的登陸時間的格林威治時間的時間戳記。

格林威治時間

格林尼治標準時間(舊譯格林尼治平均時間或格林威治標準時間;英語:Greenwich Mean Time,GMT)是指位於英國倫敦郊區的皇家格林尼治天文台的標準時間,因為本初子午線被定義在通過那裡的經線。自1924年2月5日開始,格林尼治天文台每隔一小時會向全世界發放調時資訊。

時間戳記

時間戳記(timestamp),通常是一個字元序列,唯一地標識某一刻的時間。數字時間戳記技術是數位簽章技術一種變種的應用。
於是,只要登陸的時候後,先查詢到上一次的時間戳記(此時還沒修改資料),記錄下來;然後修改時間戳記為最新,記錄下來,兩個時間戳記相比較。這裡就用到

getdate()

函數

getdate()

getdate() 函數取得日期/時間資訊。

實現

上面說了這麼多,下面就貼代碼好了。
這段代碼放在登陸的函數裡面。
假設$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網站判斷使用者是否是手機訪問的方法

通過php判斷使用者是否關注公眾號

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.