首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PHP 获取用户行为参考代码 [IP/OS/URL/Broswer]

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

作者头像
泥豆芽儿 MT
发布于 2018-09-11 03:40:33
发布于 2018-09-11 03:40:33
83600
代码可运行
举报
运行总次数:0
代码可运行

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1333870

♩ 背景

  • 一个成型的网站,经常需要统计用户的偏好行为,比如喜欢查看哪个页面,浏览哪类产品等,此时需要记录用户的行为,经过数据分析,从而获得有价值的信息,方便商家的策略定向
  • 下面,是自己测试整理后的部分代码: 可以帮助开发者获取用户的 IP、操作系统、访问 URL浏览器 等主要信息,可供参考…

♪ 主要方法展示

⑴. PHP 获取用户的IP地址

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
* 此方法返回用户的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. 或者使用这个 ThinkPHP获取ip地址,或者数字地址和ip地理位置的查询
  3. 对于IP的存储,建议参考文章:ip2long 和 long2ip

⑵. PHP 获取当前页面 URL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 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 获取操作系统信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
     * 获取客户端操作系统信息包括 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 获取浏览器信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
     * 获取客户端浏览器信息
     * @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;
    }

♫ 测试参考:

  • 考虑实际开发,一般会设计各个页面继承某个公共类,然后在公共类的初始方法或构造函数中执行类似下面的逻辑处理,获取用户行为并记录到数据库,之后再进行数据读取后的展示设计…
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
* 仅供参考而已
*/
        $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 !
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年04月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
判断访问方式添加欢迎信息
希望各位大大可以评论一下小破站 原创文章:https://www.gqink.cn/archives/558/
九霄道长
2021/03/02
7070
php获取主机信息
if(!empty($_SERVER['HTTP_USER_AGENT'])){
botkenni
2019/09/02
3.5K0
PHP 简单的获取用户 IP,系统,浏览器等信息
在使用浏览器发起的 HTTP 请求中,通常会包含一个识别标识。它名为 User Agent,简称 UA。它是一串包含了客户端基础信息的字符串。通过它可以方便的获取客户端的操作系统,语言,浏览器和版本信息。我们可以利用 PHP 分析这些代码,来进行用户访问信息的识别等
Z4
2020/04/22
1K0
PHP常用类 – 取随机字符串
PHP常用类 – 取得随机字符串 取随机字符串 <?php /* 作用:取得随机字符串 参数: 1、(int)$length = 32 #随机字符长度,默认为32 2、(int)$mode = 0 #
PHP学习网
2022/12/17
1.9K0
自己写个简单的访客统计
最近想给自己网站加个访客统计,发现好多网站统计都需要付费…,这对于我们这种非营利性的网站来说无疑是不划算的,于是就自己写了个简单的网站访客统计效果如下
Blank.
2023/04/13
9940
自己写个简单的访客统计
如何让文章显示用户评论时所用的设备是什么
怎样让文章的评论显示出用户评论时,使用的是什么设备呢? 获取用户IP 如果使用的是Typecho系统,那么评论里是可以直接获取到评论IP的。 $comments->ip 非Typecho系统,php语言则使用以下代码。 //获取IP function getIp(){ $ip= '-'; if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]) { $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FO
目的地-Destination
2023/03/06
2.2K0
如何让文章显示用户评论时所用的设备是什么
巧用社工方式获取好友IP地址
常在水边走,哪有不湿鞋的道理。一不小心就会上当受骗,当我们上当受骗后第一时间想到的是怎样获取骗子的个人信息。而这里QQ便是我们骗子的联系媒介。
逍遥子大表哥
2021/12/18
1.6K0
巧用社工方式获取好友IP地址
实现评论显示操作系统和评论来源
首先打开 functions.php 文件,粘贴下面的代码 // 获取浏览器信息 function getBrowser($agent) { if (preg_match('/MSIE\s([^\s|;]+)/i', $agent, $regs)) { $outputer = 'Internet Explore'; } else if (preg_match('/FireFox\/([^\s]+)/i', $agent, $regs)) { $str1 = explode('Fi
团团生活志
2022/08/16
6120
微云网盘php解析源码_更新
作者:matrix 被围观: 13,244 次 发布时间:2014-01-06 分类:零零星星 | 142 条评论 »
HHTjim 部落格
2022/09/26
6.3K0
php网站判断用户是否是手机访问的方法
有些时候,我们需要判断用户是否用手机访问,如果是手机的话,就跳转到指定的手机友好页面。这里就介绍一下,如何判断用户是否用手机访问。
全栈程序员站长
2022/07/07
2.5K0
PHP获取手机型号与系统型号
九笙
2025/07/14
660
Typecho评论页美化
今天下午又弄了一个美化的功能,自我感觉还不错,Typecho评论美化,能显示评论者的设备和浏览器信息,挺简单的直接分享给你们,根据各位博主的兴趣自行研究吧,下面有效果。
qiangzai
2021/12/20
9340
Typecho评论页美化
Typecho 博客评论显示 UserAgent (UA)
UA图标下载:https://bsblog.lanzoui.com/iIgPuogw52j
团团生活志
2022/08/16
4790
Typecho 博客文章评论添加显示 UserAgent(UA)的功能
首先 将下面这段 css 全部加入到 Mirages/css/7.10.0/Mirages.min.css 末尾。
季春二九
2023/03/22
1.3K0
Typecho 博客文章评论添加显示 UserAgent(UA)的功能
如何获取微信文章封面和文章标题!
小程序需要一个获取微信文章封面和标题的功能,然后网上找了一圈,找到了下面这个代码,但是已经不能使用了,获取不到微信的标题,自己改动之后分享给有需要的人。
执行上下文
2022/07/26
1.1K0
网站前端修改
请注意,本文编写于 1070 天前,最后修改于 1070 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
1.5K0
php前后台设计常用函数类
V站笔记 <?php //因为前后台都要用到,所以放在supermario文件夹下方便重用 /** * 喔~可爱滴小数点~喔~可爱滴千位数~ * 如果位数超过4位,则将第3位前增加, * @param
V站CEO-西顾
2018/06/10
1.6K0
PHP获取客户端真实IP地址
参考文章:https://www.php.cn/php-weizijiaocheng-406174.html
很酷的站长
2023/02/01
6.5K0
分享个已封装好自用的评论UA函数以及使用教程
然后呢我自己使用的是emlog,在EmlogPro 1.4.0 以前的版本emlog_comment表里面是没有useragent这个字段的,然后由于个人非常想给评论列表弄个显示UA显示的,但是又不想去改系统文件以及自己增加字段所以就给作者推荐了,其实很早以前Emlog5.3.1版本就有这个字段的,不知道为什么废弃掉了。
用户8099761
2023/05/11
4170
分享个已封装好自用的评论UA函数以及使用教程
PHP获取用户ip地址
本篇文章主要介绍PHP获取ip地址的方法,感兴趣的朋友参考下,我的是 Typecho 博客系统,可以在 functions.php 中添加方法,最后在想显示的位置调用 <?php echo getip
qiangzai
2021/12/21
3K0
PHP获取用户ip地址
相关推荐
判断访问方式添加欢迎信息
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验