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 相关文章推荐
建立动态的WML站点(二)
Oct 09 PHP
常用表单验证类,有了这个,一般的验证就都齐了。
Dec 06 PHP
php学习笔记 数组遍历实现代码
Jun 09 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
Jun 22 PHP
php读取csv数据保存到数组的方法
Jan 03 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
Mar 04 PHP
Mac系统下安装PHP Xdebug
Mar 30 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
May 09 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 PHP
tp5.1 框架join方法用法实例分析
May 26 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
example1.php
2006/10/09 PHP
建立动态的WML站点(一)
2006/10/09 PHP
PHP 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
PHP数组操作汇总 php数组的使用技巧
2011/07/17 PHP
php 计划任务 检测用户连接状态
2012/03/29 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
php数组函数array_key_exists()小结
2015/12/10 PHP
PHP上传图片、删除图片简单实例
2016/11/12 PHP
php实现留言板功能
2017/03/05 PHP
js类 from qq
2006/11/13 Javascript
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
再论Javascript下字符串连接的性能
2011/03/05 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
纯js仿淘宝京东商品放大镜功能
2017/03/02 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
Python 类的继承实例详解
2017/03/25 Python
python定向爬取淘宝商品价格
2018/02/27 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
在python 不同时区之间的差值与转换方法
2019/01/14 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
python3 xpath和requests应用详解
2020/03/06 Python
QML用PathView实现轮播图
2020/06/03 Python
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
深圳-东方伟业笔试部分
2015/02/11 面试题
工程师求职简历的自我评价分享
2013/10/10 职场文书
大学本科生的个人自我评价
2013/12/09 职场文书
母亲节演讲稿范文
2014/01/02 职场文书
车辆转让协议书
2014/09/24 职场文书