这篇文章介绍的内容是关于PHP 获取用户行为[IP/OS/URL/Broswer]参考代码,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
一个成型的网站,经常需要统计用户的偏好行为,比如喜欢查看哪个页面,浏览哪类产品等,此时需要记录用户的行为,经过数据分析,从而获得有价值的信息,方便商家的策略定向
下面,是自己测试整理后的部分代码,可以帮助开发者获取用户的IP、操作系统、访问URL、浏览器等主要信息,可供参考…
/**
* 此方法返回用户的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;
}也可以参考这个获取方法 : PHP获取当前用户真实IP的方法对于IP的存储,建议参考文章:ip2long 和 long2ip
/**
* 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
/**
* 获取客户端操作系统信息包括 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;
}
当然,也可以使用内置的参数获取
<?PHP echo PHP_OS; ?>可以参考文章: 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 !
以上就是PHP 获取用户行为[IP/OS/URL/Broswer]参考代码的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号