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 相关文章推荐
Zend公司全球首推PHP认证
Oct 09 PHP
php错误级别的设置方法
Jun 17 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
Jul 05 PHP
PHP在网页中动态生成PDF文件详细教程
Jul 05 PHP
PHP中exec与system用法区别分析
Sep 22 PHP
微信公众平台开发关注及取消关注事件的方法
Dec 23 PHP
php生成excel列名超过26列大于Z时的解决方法
Dec 29 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
PHP的mysqli_set_charset()函数讲解
Jan 23 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 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+ajax 无刷新删除数据
2010/02/20 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
javascript 全等号运算符使用说明
2010/05/31 Javascript
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
菊花转动的jquery加载动画效果
2018/08/19 jQuery
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
python使用super()出现错误解决办法
2017/08/14 Python
python+pyqt实现右下角弹出框
2017/10/26 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
Python设计模式之代理模式实例详解
2019/01/19 Python
对Python中画图时候的线类型详解
2019/07/07 Python
Python使用APScheduler实现定时任务过程解析
2019/09/11 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
学习python需要有编程基础吗
2020/06/02 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
英国知名的皮手套品牌:Dents
2016/11/13 全球购物
心理健康教育心得体会
2013/12/29 职场文书
美术专业个人自我评价
2014/01/18 职场文书
公司员工离职证明书
2014/10/04 职场文书
先进党组织事迹材料
2014/12/26 职场文书
面试复试通知单
2015/04/24 职场文书
古诗之感恩老师
2019/10/24 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书