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读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
Jul 31 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
Jun 20 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
php将access数据库转换到mysql数据库的方法
Dec 24 PHP
浅谈PHP安全防护之Web攻击
Jan 03 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
基于php数组中的索引数组和关联数组详解
Mar 12 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
Sep 28 PHP
php实现的PDO异常处理操作分析
Dec 27 PHP
浅谈php://filter的妙用
Mar 05 PHP
PHP常用字符串函数用法实例总结
Jun 04 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中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
JavaScript Undefined,Null类型和NaN值区别
2008/10/22 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
基于JavaScript实现自定义滚动条
2017/01/25 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
面试常见的js算法题
2017/03/23 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
Python将多个excel表格合并为一个表格
2021/02/22 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
Europcar意大利:汽车租赁
2019/07/07 全球购物
软件设计的目标是什么
2016/12/04 面试题
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
大学军训感言300字
2014/03/09 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
人与自然的观后感
2015/06/18 职场文书
利用 JavaScript 构建命令行应用
2021/11/17 Javascript
MySQL分布式恢复进阶
2022/07/23 MySQL