PHP获取用户的浏览器与操作系统信息的代码


Posted in PHP onSeptember 04, 2012

1.用户访问服务器时,利用PHP的超级全局变量$_SERVER数组中字段['HTTP_USER_AGENT'] 获取访问用户的所有信息

我访问时的$_SERVER['HTTP_USER_AGENT'] 字符串 :

Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2

2.利用正则表达式匹配以上字符串,用户的浏览器 操作系统信息

3.PHP根据匹配后的字符串(用户的浏览器 操作系统信息),分配需要的CSS文件,JS等等…返回给用户

我的浏览器 操作系统信息
Browser: Chrome 5.0

Platform: Windows 7

代码如下:

<?php
//显示访问用户的浏览器信息
echo 'Browser: ' . determinebrowser($Agent) . '<BR>';
//显示访问用户的操作系统平台
echo 'Platform: ' . determineplatform($Agent). '<BR>';
//正值表达式比对解析$_SERVER['HTTP_USER_AGENT']中的字符串 获取访问用户的浏览器的信息
function determinebrowser ($Agent) {
$browseragent="";   //浏览器
$browserversion=""; //浏览器的版本
if (ereg('MSIE ([0-9].[0-9]{1,2})',$Agent,$version)) {
 $browserversion=$version[1];
 $browseragent="Internet Explorer";
} else if (ereg( 'Opera/([0-9]{1,2}.[0-9]{1,2})',$Agent,$version)) {
 $browserversion=$version[1];
 $browseragent="Opera";
} else if (ereg( 'Firefox/([0-9.]{1,5})',$Agent,$version)) {
 $browserversion=$version[1];
 $browseragent="Firefox";
}else if (ereg( 'Chrome/([0-9.]{1,3})',$Agent,$version)) {
 $browserversion=$version[1];
 $browseragent="Chrome";
}
else if (ereg( 'Safari/([0-9.]{1,3})',$Agent,$version)) {
 $browseragent="Safari";
 $browserversion="";
}
else {
$browserversion="";
$browseragent="Unknown";
}
return $browseragent." ".$browserversion;
}
// 同理获取访问用户的浏览器的信息
function determineplatform ($Agent) {
$browserplatform=='';
if (eregi('win',$Agent) && strpos($Agent, '95')) {
$browserplatform="Windows 95";
}
elseif (eregi('win 9x',$Agent) && strpos($Agent, '4.90')) {
$browserplatform="Windows ME";
}
elseif (eregi('win',$Agent) && ereg('98',$Agent)) {
$browserplatform="Windows 98";
}
elseif (eregi('win',$Agent) && eregi('nt 5.0',$Agent)) {
$browserplatform="Windows 2000";
}
elseif (eregi('win',$Agent) && eregi('nt 5.1',$Agent)) {
$browserplatform="Windows XP";
}
elseif (eregi('win',$Agent) && eregi('nt 6.0',$Agent)) {
$browserplatform="Windows Vista";
}
elseif (eregi('win',$Agent) && eregi('nt 6.1',$Agent)) {
$browserplatform="Windows 7";
}
elseif (eregi('win',$Agent) && ereg('32',$Agent)) {
$browserplatform="Windows 32";
}
elseif (eregi('win',$Agent) && eregi('nt',$Agent)) {
$browserplatform="Windows NT";
}elseif (eregi('Mac OS',$Agent)) {
$browserplatform="Mac OS";
}
elseif (eregi('linux',$Agent)) {
$browserplatform="Linux";
}
elseif (eregi('unix',$Agent)) {
$browserplatform="Unix";
}
elseif (eregi('sun',$Agent) && eregi('os',$Agent)) {
$browserplatform="SunOS";
}
elseif (eregi('ibm',$Agent) && eregi('os',$Agent)) {
$browserplatform="IBM OS/2";
}
elseif (eregi('Mac',$Agent) && eregi('PC',$Agent)) {
$browserplatform="Macintosh";
}
elseif (eregi('PowerPC',$Agent)) {
$browserplatform="PowerPC";
}
elseif (eregi('AIX',$Agent)) {
$browserplatform="AIX";
}
elseif (eregi('HPUX',$Agent)) {
$browserplatform="HPUX";
}
elseif (eregi('NetBSD',$Agent)) {
$browserplatform="NetBSD";
}
elseif (eregi('BSD',$Agent)) {
$browserplatform="BSD";
}
elseif (ereg('OSF1',$Agent)) {
$browserplatform="OSF1";
}
elseif (ereg('IRIX',$Agent)) {
$browserplatform="IRIX";
}
elseif (eregi('FreeBSD',$Agent)) {
$browserplatform="FreeBSD";
}
if ($browserplatform=='') {$browserplatform = "Unknown"; }
return $browserplatform;
}
?>
PHP 相关文章推荐
深入PHP中慎用双等于(==)的详解
Jun 06 PHP
php二维数组转成字符串示例
Feb 17 PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
Sep 10 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
Dec 17 PHP
PHP实现无限级分类(不使用递归)
Oct 22 PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 PHP
PHP实现二维数组去重功能示例
Jan 12 PHP
php基于数组函数实现关联表的编辑操作示例
Jul 04 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
Aug 03 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
Laravel框架控制器的request与response用法示例
Sep 30 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
Sep 04 #PHP
PHP中“简单工厂模式”实例代码讲解
Sep 04 #PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 #PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 #PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 #PHP
关于UEditor编辑器远程图片上传失败的解决办法
Aug 31 #PHP
php数组一对一替换实现代码
Aug 31 #PHP
You might like
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
写出高效jquery代码的19条指南
2014/03/19 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
jquery 插件实现多行文本框[textarea]自动高度
2015/03/04 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
2019/07/24 Javascript
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
js实现抽奖功能
2020/11/24 Javascript
详解Python自建logging模块
2018/01/29 Python
python样条插值的实现代码
2018/12/17 Python
python urllib爬虫模块使用解析
2019/09/05 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
如何定义TensorFlow输入节点
2020/01/23 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
Shopping happy life西班牙:以最优惠的价格提供最好的时尚配饰
2020/03/13 全球购物
白酒营销策划方案
2014/08/17 职场文书
教师见习报告范文
2014/11/03 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
投标承诺函格式
2015/01/21 职场文书
文员岗位职责
2015/02/04 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
2019个人年度目标制定攻略!
2019/07/12 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers