PHP 获取用户行为[IP/OS/URL/Broswer]参考代码

不言
Lepaskan: 2023-03-24 14:00:02
asal
2274 orang telah melayarinya

这篇文章介绍的内容是关于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;
    }
Salin selepas log masuk
  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;
}
Salin selepas log masuk

获取到的结果类似: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;
    }
Salin selepas log masuk
  1. 当然,也可以使用内置的参数获取 <?PHP echo PHP_OS; ?>

  2. 可以参考文章: PHP 获取服务器操作系统等信息

⑷. PHP 获取浏览器信息

/**
     * 获取客户端浏览器信息
     * @param  null
     * @author  Jea杨
     * @return string
     */public function getBroswer()
    {
        $user_OSagent = $_SERVER[&#39;HTTP_USER_AGENT&#39;];        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;
    }
Salin selepas log masuk

♫ 测试参考:

  • 考虑实际开发,一般会设计各个页面继承某个公共类,然后在公共类的初始方法或构造函数中执行类似下面的逻辑处理,获取用户行为并记录到数据库,之后再进行数据读取后的展示设计…

/**
* 仅供参考而已
*/
        $ips = explode(&#39;,&#39;, $this->get_real_ips());        $ip = $ips[0];        $browser = $this->getBroswer();        $os = $this->getOS();        $addData = [            &#39;uid&#39; => $user_id,            &#39;curr_url&#39; => $this->currPageURL(),            &#39;user_ip&#39; => $ip,            &#39;os&#39; => $os,            &#39;browser&#39; => $browser,            &#39;add_time&#39; => time(),
        ];
        M(&#39;user_behavior&#39;)
            ->add($addData);
Salin selepas log masuk
  • 数据库中的记录参考:

  • 仅供参考,See You !


Atas ialah kandungan terperinci PHP 获取用户行为[IP/OS/URL/Broswer]参考代码. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan