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编程效率 引入缓存机制提升性能
Feb 15 PHP
判断是否为指定长度内字符串的php函数
Feb 16 PHP
关于PHP中Object对象的笔记分享
Jun 28 PHP
php header Content-Type类型小结
Jul 03 PHP
PHP gbk环境下json_dencode传送来的汉字
Nov 13 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
Thinkphp实现MySQL读写分离操作示例
Jun 25 PHP
php获取指定范围内最接近数的方法
Jun 02 PHP
关于PHP内置的字符串处理函数详解
Feb 04 PHP
php删除数组指定元素实现代码
May 03 PHP
thinkphp5框架实现的自定义扩展类操作示例
May 16 PHP
laravel 根据不同组织加载不同视图的实现
Oct 14 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
PHP读取xml方法介绍
2013/01/12 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
学习JavaScript的最佳方法分享
2011/10/21 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
2013/04/24 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
jquery实现清新实用的网页菜单效果
2015/08/28 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
超简单的Python HTTP服务
2019/07/22 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
Pandas聚合运算和分组运算的实现示例
2019/10/17 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
斯福泰克软件测试面试题
2015/02/16 面试题
护理自荐信范文
2013/10/05 职场文书
技校教师求职简历的自我评价
2013/10/20 职场文书
生物科学专业个人求职信范文
2013/12/07 职场文书
红头文件任命书范本
2014/06/05 职场文书
技术支持岗位职责
2015/02/13 职场文书
员工家属慰问信
2015/03/24 职场文书
团委工作总结2015
2015/04/02 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
2021/10/16 HTML / CSS
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js