一个浏览器检查类
作者:小白 | 来源:互联网 | 2018-04-06 16:48
原作者:epsilon7SonyMusic(sonymusic@163.net)classBrowserDetector{var$UA;$HTTP_USER_AGENT的内容var$BROWSERUnknown;浏览器类型var$PLATFORMUnknown;操作系统var$VERSION;浏览器版本号var$MAJORVER;浏览器主版本号v
//原作者:epsilon7
//SonyMusic(sonymusic@163.net)
class BrowserDetector {
var $UA = ""; //$HTTP_USER_AGENT的内容
var $BROWSER= "Unknown"; //浏览器类型
var $PLATFORM = "Unknown"; //操作系统
var $VERSION= ""; //浏览器版本号
var $MAJORVER = ""; //浏览器主版本号
var $MINORVER = ""; //浏览器副版本号
/* 构造函数开始 */
function BrowserDetector(){
$this->UA = getenv(HTTP_USER_AGENT);
$preparens = "";
$parens = "";
$i = strpos($this->UA,"(");
if ($i >= 0) {
$preparens = trim(substr($this->UA,0,$i));
$parens = substr($this->UA,$i 1,strlen($this->UA));
$j = strpos($parens,")");
if($j>=0) {
$parens = substr($parens,0,$j);
}
}
else {
$preparens = $this->UA;
}
$browVer = $preparens;
$token = trim(strtok($parens,";"));
while($token) {
if($token=="compatible") {
}
elseif(preg_match("/MSIE/i","$token")) {
$browVer = $token;
}
elseif(preg_match("/Opera/i","$token")) {
$browVer = $token;
}
elseif(preg_match("/X11/i","$token") || preg_match("/SunOS/i","$token") || preg_match ("/Linux/i","$token")) {
$this->PLATFORM = "Unix";
}
elseif(preg_match("/Win/i","$token")) {
$this->PLATFORM = $token;
}
elseif(preg_match("/Mac/i","$token") || preg_match("/PPC/i","$token")) {
$this->PLATFORM = $token;
}
$token = strtok(";");
}
$msieIndex = strpos($browVer,"MSIE");
if($msieIndex >= 0) {
$browVer = substr($browVer,$msieIndex,strlen($browVer));
}
$leftover = "";
if(substr($browVer,0,strlen("Mozilla")) == "Mozilla") {
$this->BROWSER = "Netscape";
$leftover=substr($browVer,strlen("Mozilla") 1,strlen($browVer));
}
elseif(substr($browVer,0,strlen("Lynx")) == "Lynx") {
$this->BROWSER = "Lynx";
$leftover=substr($browVer,strlen("Lynx") 1,strlen($browVer));
}
elseif(substr($browVer,0,strlen("MSIE")) == "MSIE") {
$this->BROWSER = "IE";
$leftover=substr($browVer,strlen("MSIE") 1,strlen($browVer));
}
elseif(substr($browVer,0,strlen("Microsoft Internet Explorer")) == "Microsoft Internet Explorer") {
$this->BROWSER = "IE";
$leftover=substr($browVer,strlen("Microsoft Internet Explorer") 1,strlen($browVer));
}
elseif(substr($browVer,0,strlen("Opera")) == "Opera") {
$this->BROWSER = "Opera";
$leftover=substr($browVer,strlen("Opera") 1,strlen($browVer));
}
$leftover = trim($leftover);
$i=strpos($leftover," ");
if($i > 0) {
$this->VERSION = substr($leftover,0,$i);
}
else {
$this->VERSION = $leftover;
}
$j = strpos($this->VERSION,".");
if($j >= 0) {
$this->MAJORVER = substr($this->VERSION,0,$j);
$this->MINORVER = substr($this->VERSION,$j 1,strlen($this->VERSION));
}
else {
$this->MAJORVER = $this->VERSION;
}
}
}
//测试程序开始
$test=new browserdetector;
echo $test->UA."
";
echo $test->BROWSER."
";
echo $test->PLATFORM."
";
echo $test->VERSION."
";
echo $test->MAJORVER."
";
echo $test->MINORVER."
";
?>
推荐阅读
-
HDFS Federation 是一种扩展 HDFS 架构的方式,通过引入多个独立的 NameNode 来解决单点故障和性能瓶颈问题。本文将详细探讨 HDFS Federation 的工作原理、优势以及潜在挑战。 ...
[详细]
蜡笔小新 2024-12-28 08:22:22
-
在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ...
[详细]
蜡笔小新 2024-12-28 08:20:07
-
-
本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ...
[详细]
蜡笔小新 2024-12-27 17:31:41
-
本章节深入浅出地介绍了Linux系统中的基本命令操作,帮助读者快速上手并理解其核心功能。 ...
[详细]
蜡笔小新 2024-12-27 17:15:39
-
本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ...
[详细]
蜡笔小新 2024-12-27 16:44:26
-
本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ...
[详细]
蜡笔小新 2024-12-27 16:33:32
-
在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ...
[详细]
蜡笔小新 2024-12-27 14:49:56
-
本文介绍如何使用CMake支持不同平台的代码编译。通过一个简单的示例,我们将展示如何编写CMakeLists.txt以适应Linux和Windows平台,并实现跨平台的函数调用。 ...
[详细]
蜡笔小新 2024-12-27 14:43:56
-
本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ...
[详细]
蜡笔小新 2024-12-27 14:38:54
-
本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ...
[详细]
蜡笔小新 2024-12-27 13:47:38
-
本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ...
[详细]
蜡笔小新 2024-12-27 13:19:53
-
本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ...
[详细]
蜡笔小新 2024-12-27 10:18:13
-
本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ...
[详细]
蜡笔小新 2024-12-27 03:46:27
-
本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ...
[详细]
蜡笔小新 2024-12-26 19:47:05
-
本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ...
[详细]
蜡笔小新 2024-12-26 19:14:29
-