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 相关文章推荐
Oracle Faq(Oracle的版本)
Oct 09 PHP
真正面向对象编程:PHP5.01发布
Oct 09 PHP
建立动态的WML站点(三)
Oct 09 PHP
基于mysql的bbs设计(一)
Oct 09 PHP
discuz Passport 通行证 整合笔记
Jun 30 PHP
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
php Notice: Undefined index 错误提示解决方法
Aug 29 PHP
检测png图片是否完整的php代码
Sep 06 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 PHP
PHP数据对象映射模式实例分析
Mar 29 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 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实现mysql数据库备份类
2008/03/20 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
JS的反射问题
2010/04/07 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
python处理xml文件的方法小结
2017/05/02 Python
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
Python常见数据类型转换操作示例
2019/05/08 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
如何在Django项目中引入静态文件
2019/07/26 Python
python RSA加密的示例
2020/12/09 Python
需要知道的CSS3动画技术
2010/01/01 HTML / CSS
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
英国高街电视:High Street TV
2018/05/22 全球购物
应用服务器有那些
2012/01/19 面试题
往来会计岗位职责
2013/12/19 职场文书
法学自荐信
2014/06/20 职场文书
授权委托书怎么写
2014/09/25 职场文书
党建工作整改措施
2014/10/28 职场文书
2014年图书馆工作总结
2014/11/25 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
教师远程培训心得体会
2016/01/09 职场文书
Nginx的rewrite模块详解
2021/03/31 Servers
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android