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 相关文章推荐
Mysql的常用命令
Oct 09 PHP
用来给图片加水印的PHP类
Apr 09 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
PHP 创建标签云函数代码
May 26 PHP
PHP中英混合字符串截取函数代码
Jul 17 PHP
PHP获取MAC地址的具体实例
Dec 13 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
Jan 05 PHP
基于thinkPHP框架实现留言板的方法
Oct 17 PHP
PHP实现的DES加密解密封装类完整实例
Apr 29 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
May 31 PHP
php微信公众号开发之音乐信息
Oct 20 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 定界符格式引起的错误
2011/05/24 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
Jquery 常用方法经典总结
2010/01/28 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
详解Angular2 之 结构型指令
2017/06/21 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
2019/01/08 Javascript
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
PyQt5每天必学之拖放事件
2020/08/27 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
Python通过format函数格式化显示值
2020/10/17 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
使用HTML5 Canvas API绘制弧线的教程
2016/03/22 HTML / CSS
广州地球村科技数据库题目
2016/04/25 面试题
单位提档介绍信
2014/01/17 职场文书
高中打架检讨书
2014/02/13 职场文书
优秀食品类广告词
2014/03/19 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
2015大一新生军训感言
2015/08/01 职场文书
人事任命书范本
2015/09/21 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript
python内置模块之上下文管理contextlib
2022/06/14 Python