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 过滤危险html代码
Jun 29 PHP
供参考的 php 学习提高路线分享
Oct 23 PHP
深入PHP内存相关的功能特性详解
Jun 08 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
php实现aes加密类分享
Feb 16 PHP
PHP代码优化的53个细节
Mar 03 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
Nov 09 PHP
Zend Framework处理Json数据方法详解
Dec 09 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
Oct 11 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
Nov 09 PHP
PHP新手指南
Apr 01 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
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
JavaScript实用技巧(一)
2010/08/16 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
举例讲解jQuery中可见性过滤选择器的使用
2016/04/18 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
Node.js使用Express.Router的方法
2017/11/14 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
python中的json总结
2018/10/11 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
python绘制漏斗图步骤详解
2019/03/04 Python
python 求10个数的平均数实例
2019/12/16 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
美国最大网上鞋店:Zappos
2016/07/25 全球购物
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
高一家长会邀请函
2014/01/12 职场文书
党员批评与自我批评
2014/02/12 职场文书
责任心演讲稿
2014/05/14 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
dubbo服务整合zipkin详解
2021/07/26 Java/Android
图文详解Nginx版本平滑升级方案
2021/09/15 Servers