PHP 擷取使用者行為[IP/OS/URL/Broswer]參考代碼

來源:互聯網
上載者:User

這篇文章介紹的內容是關於PHP 擷取使用者行為[IP/OS/URL/Broswer]參考代碼,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

♩ 背景

  • 一個成型的網站,經常需要統計使用者的偏好行為,比如喜歡查看哪個頁面,瀏覽哪類產品等,此時需要記錄使用者的行為,經過資料分析,從而獲得有價值的資訊,方便商家的策略定向

  • 下面,是自己測試整理後的部分代碼,可以協助開發人員擷取使用者的IP、作業系統、訪問URL、瀏覽器等主要資訊,可供參考…

♪ 主要方法展示

⑴. PHP 擷取使用者的IP地址

/*** 此方法返回使用者的IP地址,同時如果擁有代理IP,將會以逗號追加在後面* 如果只取用當前IP,可參考 :* $ips = explode(',', $bargainModel->get_real_ips());* $ip = $ips[0];*/public function get_real_ips()    {        global $ip;        if (getenv("HTTP_CLIENT_IP")) {            $ip = getenv("HTTP_CLIENT_IP");        } else if (getenv("HTTP_X_FORWARDED_FOR")) {            $ip = getenv("HTTP_X_FORWARDED_FOR");        } else if (getenv("REMOTE_ADDR")) {            $ip = getenv("REMOTE_ADDR");        } else {            $ip = "NULL";        }        return $ip;    }
  1. 也可以參考這個擷取方法 : PHP擷取目前使用者真實IP的方法

  2. 對於IP的儲存,建議參考文章:ip2long 和 long2ip

⑵. PHP 擷取當前頁面 URL

/** * PHP 擷取當前頁面 URL * @return string */function currPageURL(){    $pageURL = 'http';    if (!empty($_SERVER['HTTPS'])) {        $pageURL .= "s";    }    $pageURL .= "://";    if ($_SERVER["SERVER_PORT"] != "80") {        $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];    } else {        $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];    }    return $pageURL;}

擷取到的結果類似:https://sinia.com/cart/show/id/292.html?ord_id=43

⑶. PHP 擷取作業系統資訊

/**     * 擷取用戶端作業系統資訊包括 win10     * @param  null     * @author  Jea楊     * @return string     */    function getOS()    {        $agent = $_SERVER['HTTP_USER_AGENT'];        $os = false;        if (preg_match('/win/i', $agent) && strpos($agent, '95')) {            $os = 'Windows 95';        } else if (preg_match('/win 9x/i', $agent) && strpos($agent, '4.90')) {            $os = 'Windows ME';        } else if (preg_match('/win/i', $agent) && preg_match('/98/i', $agent)) {            $os = 'Windows 98';        } else if (preg_match('/win/i', $agent) && preg_match('/nt 6.0/i', $agent)) {            $os = 'Windows Vista';        } else if (preg_match('/win/i', $agent) && preg_match('/nt 6.1/i', $agent)) {            $os = 'Windows 7';        } else if (preg_match('/win/i', $agent) && preg_match('/nt 6.2/i', $agent)) {            $os = 'Windows 8';        } else if (preg_match('/win/i', $agent) && preg_match('/nt 10.0/i', $agent)) {            $os = 'Windows 10';#添加win10判斷          } else if (preg_match('/win/i', $agent) && preg_match('/nt 5.1/i', $agent)) {            $os = 'Windows XP';        } else if (preg_match('/win/i', $agent) && preg_match('/nt 5/i', $agent)) {            $os = 'Windows 2000';        } else if (preg_match('/win/i', $agent) && preg_match('/nt/i', $agent)) {            $os = 'Windows NT';        } else if (preg_match('/win/i', $agent) && preg_match('/32/i', $agent)) {            $os = 'Windows 32';        } else if (preg_match('/linux/i', $agent)) {            $os = 'Linux';        } else if (preg_match('/unix/i', $agent)) {            $os = 'Unix';        } else if (preg_match('/sun/i', $agent) && preg_match('/os/i', $agent)) {            $os = 'SunOS';        } else if (preg_match('/ibm/i', $agent) && preg_match('/os/i', $agent)) {            $os = 'IBM OS/2';        } else if (preg_match('/Mac/i', $agent) && preg_match('/PC/i', $agent)) {            $os = 'Macintosh';        } else if (preg_match('/PowerPC/i', $agent)) {            $os = 'PowerPC';        } else if (preg_match('/AIX/i', $agent)) {            $os = 'AIX';        } else if (preg_match('/HPUX/i', $agent)) {            $os = 'HPUX';        } else if (preg_match('/NetBSD/i', $agent)) {            $os = 'NetBSD';        } else if (preg_match('/BSD/i', $agent)) {            $os = 'BSD';        } else if (preg_match('/OSF1/i', $agent)) {            $os = 'OSF1';        } else if (preg_match('/IRIX/i', $agent)) {            $os = 'IRIX';        } else if (preg_match('/FreeBSD/i', $agent)) {            $os = 'FreeBSD';        } else if (preg_match('/teleport/i', $agent)) {            $os = 'teleport';        } else if (preg_match('/flashget/i', $agent)) {            $os = 'flashget';        } else if (preg_match('/webzip/i', $agent)) {            $os = 'webzip';        } else if (preg_match('/offline/i', $agent)) {            $os = 'offline';        } else {            $os = 'Unknown';        }        return $os;    }
  1. 當然,也可以使用內建的參數擷取 <?PHP echo PHP_OS; ?>

  2. 可以參考文章: PHP 擷取伺服器作業系統等資訊

⑷. PHP 擷取瀏覽器資訊

/**     * 擷取用戶端瀏覽器資訊     * @param  null     * @author  Jea楊     * @return string     */public function getBroswer()    {        $user_OSagent = $_SERVER['HTTP_USER_AGENT'];        if (strpos($user_OSagent, "Maxthon") && strpos($user_OSagent, "MSIE")) {            $visitor_browser = "Maxthon(Microsoft IE)";        } elseif (strpos($user_OSagent, "Maxthon 2.0")) {            $visitor_browser = "Maxthon 2.0";        } elseif (strpos($user_OSagent, "Maxthon")) {            $visitor_browser = "Maxthon";        } elseif (strpos($user_OSagent, "Edge")) {            $visitor_browser = "Edge";        } elseif (strpos($user_OSagent, "Trident")) {            $visitor_browser = "IE";        } elseif (strpos($user_OSagent, "MSIE")) {            $visitor_browser = "IE";        } elseif (strpos($user_OSagent, "MSIE")) {            $visitor_browser = "MSIE";        } elseif (strpos($user_OSagent, "NetCaptor")) {            $visitor_browser = "NetCaptor";        } elseif (strpos($user_OSagent, "Netscape")) {            $visitor_browser = "Netscape";        } elseif (strpos($user_OSagent, "Chrome")) {            $visitor_browser = "Chrome";        } elseif (strpos($user_OSagent, "Lynx")) {            $visitor_browser = "Lynx";        } elseif (strpos($user_OSagent, "Opera")) {            $visitor_browser = "Opera";        } elseif (strpos($user_OSagent, "MicroMessenger")) {            $visitor_browser = "WeiXinBrowser";        } elseif (strpos($user_OSagent, "Konqueror")) {            $visitor_browser = "Konqueror";        } elseif (strpos($user_OSagent, "Mozilla/5.0")) {            $visitor_browser = "Mozilla";        } elseif (strpos($user_OSagent, "Firefox")) {            $visitor_browser = "Firefox";        } elseif (strpos($user_OSagent, "U")) {            $visitor_browser = "Firefox";        } else {            $visitor_browser = "Other Browser";        }        return $visitor_browser;    }

♫ 測試參考:

  • 考慮實際開發,一般會設計各個頁面繼承某個公用類,然後在公用類的初始方法或建構函式中執行類似下面的邏輯處理,擷取使用者行為並記錄到資料庫,之後再進行資料讀取後的展示設計…

/*** 僅供參考而已*/        $ips = explode(',', $this->get_real_ips());        $ip = $ips[0];        $browser = $this->getBroswer();        $os = $this->getOS();        $addData = [            'uid' => $user_id,            'curr_url' => $this->currPageURL(),            'user_ip' => $ip,            'os' => $os,            'browser' => $browser,            'add_time' => time(),        ];        M('user_behavior')            ->add($addData);
  • 資料庫中的記錄參考:

  • 僅供參考,See You !

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.