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 htmlspecialchars加强版
Feb 16 PHP
在PHP中使用反射技术的架构插件使用说明
May 18 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
Jun 26 PHP
php数组排序usort、uksort与sort函数用法
Nov 17 PHP
php超快高效率统计大文件行数
Jul 05 PHP
php开发工具有哪五款
Nov 09 PHP
PHP自带方法验证邮箱是否存在
Feb 01 PHP
php制作简单模版引擎
Apr 07 PHP
Yii2中datetime类的使用
Dec 17 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 PHP
php实现简单的守护进程创建、开启与关闭操作
Aug 13 PHP
laravel执行php artisan migrate报错的解决方法
Oct 09 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通用检测函数集合
2006/11/25 PHP
php创建多级目录代码
2008/06/05 PHP
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
用JAVASCRIPT如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
2007/04/20 Javascript
javascript面向对象的方式实现的弹出层效果代码
2010/01/28 Javascript
jquery获取input表单值的代码
2010/04/19 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
js使用DOM操作实现简单留言板的方法
2015/04/10 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
Python迭代和迭代器详解
2016/11/10 Python
python 中的int()函数怎么用
2017/10/17 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
使用python求解二次规划的问题
2020/02/29 Python
服务器端jupyter notebook映射到本地浏览器的操作
2020/04/14 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
python如何建立全零数组
2020/07/19 Python
python 如何调用 dubbo 接口
2020/09/24 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
canvas 绘图时位置偏离的问题解决
2020/09/16 HTML / CSS
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
TIME时代杂志台湾总代理:台时亚洲
2018/10/22 全球购物
自动化系在校本科生求职信
2013/10/23 职场文书
女娲补天教学反思
2014/02/05 职场文书
通知格式
2015/04/27 职场文书
离婚协议书格式范本
2016/03/18 职场文书