PHP浏览器检测
通过使用$_SESSION超级全局数组,可以使用PHP检索当前的用户代理。以下代码行将打印出您的用户代理。
echo$_SERVER['HTTP_USER_AGENT'];
对于Windows上的Firefox,此用户代理将如下所示。
Mozilla/5.0(Windows;U;WindowsNT5.1;en-GB;rv:1.8.1.12)Gecko/20080201Firefox/2.0.0.12
一切都很好,但是如何获得更有意义的信息(如版本号)呢?这是一个功能,该功能将从使用InternetExplorer访问页面的任何人获取版本号(主要或次要)。
function ieVersion($minor=false){ preg_match('/MSIE ([0-9]\.[0-9])/', $_SERVER['HTTP_USER_AGENT'], $match); if (!isset($match[1])) { return -1; } else { if ($minor) { return $match[1]; } else { return floor($match[1]); } } }
这将适用于所有不同版本的InternetExplorer,但其他浏览器呢。一种解决方案可能是创建许多函数,每个函数都会检查用户代理字符串中的特定字符串。但是,这只是使事情复杂化了。这是一个功能,它将检测用户代理和版本号,并以漂亮的形式显示它。
function userAgent($minor=false) { $agents = array('MSIE' => '/MSIE ([0-9]\.[0-9])/', 'Firefox' => '/Firefox\/([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*)/', 'Opera' => '/Opera\/([0-9]*\.[0-9])/', 'Safari' => '/Version\/([0-9]*\.[0-9]*\.?[0-9]*)/'); foreach($agents as $agent=>$pattern){ preg_match($pattern, $_SERVER['HTTP_USER_AGENT'], $match); if (isset($match[1])) { if ($minor) { return $agent . ' ' . $match[1]; } else { return $agent . ' ' . floor($match[1]); }; }; }; return 'Unknown browser'; }
这只会检查四种不同的浏览器类型,因此,如果要添加更多浏览器类型,只需将名称和模式附加到数组即可。要运行此功能并找出访问者的浏览器版本,请使用以下代码。
echouserAgent(true);
从上面给出的用户代理示例中,将输出Firefox2.0.0.12。
这是获取用户代理的一种非常简化的机制,因为它仅给出了版本号。要对浏览器的功能有一个非常清晰的了解,可以使用该get_browser()功能。通过将用户代理字符串传递到函数中,它将返回一个数组,详细说明浏览器能够执行的所有操作,直到启用Cookie还是JavaScript。唯一的问题是需要一个browser.ini文件来解码用户代理字符串,并且该文件并不总是可用。