簡體   English   中英

在Yii / PHP中跟蹤未登錄的用戶

[英]Tracking non logged-in users in Yii/PHP

我正在嘗試跟蹤我網站上所有未登錄用戶的操作。 目的是存儲此活動,以便我可以在創建帳戶時將其添加到其個人資料中。

我使用下面的行為為新用戶分配一個cookie,並使用該cookie作為我的Users表中“臨時用戶”行的基礎。 這樣,用戶可以立即開始與我的API進行交互。

這似乎工作正常。 但是,我發現在我的數據庫中創建了更多的“臨時用戶”行,而不是我訪問該網站的訪問者數量 - 大約為2500,而昨天約為500次訪問(根據谷歌分析)。

下面的行為有什么問題,或者我做錯了什么? 有沒有更好的辦法?

  <?php
class ApplicationBehavior extends CBehavior
{
    private $_owner;

    public function events()
    {

        return array(
            'onBeginRequest' => 'setCookies'

        );
    }

    public function setCookies()
    {

        $owner = $this->getOwner();

        if ($owner->user->getIsGuest() && !isset(Yii::app()->request->cookies['dc_tempusername'])):
            $tempusername = genRandomString(20);
            $tempuser           = new User();
            $tempuser->username = $tempusername;
            $tempuser->email    = "noemailyet@tempuser.com";
            if (isset(Yii::app()->request->cookies['dc_tempusername'])) {
                $tempuser->name = Yii::app()->request->cookies['dc_tempusername']->value;
            } else {
                $tempuser->name = "CookieBasedTempuser";
            }
            $tempuser->points  = 1;
            $tempuser->firstip = $_SERVER['REMOTE_ADDR'];
            if ($tempuser->validate()) {
                Yii::app()->request->cookies['dc_tempusername'] = new CHttpCookie('dc_tempusername', $tempusername);
                $cookie                                         = new CHttpCookie('dc_tempusername', $tempusername);
                $cookie->expire                                 = time() + 60 * 60 * 24 * 180;
                Yii::app()->request->cookies['dc_tempusername'] = $cookie;
                $tempuser->save();
            } else {
                echo CHtml::errorSummary($tempuser);
            }
        endif;

    }
}
?>

檢查cookie是否先啟用:
檢查cookie是否已啟用

如果我們是正確的,那么每當您看到用戶是訪客並且沒有cookie時,您就會創建一個新的臨時用戶。

為什么不檢查是否首先設置cookie,如果是,那么創建臨時用戶? 您最終需要設置2個cookie:要檢查的初始臨時cookie,然后是'dc_tempusername'

您甚至可以使用Browscap來檢查已知的機器人:
https://github.com/browscap/browscap-php
http://browscap.org/

您需要能夠在php.ini中定義browscap

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM