PHP用户使用的浏览器是什么?

时间:2013-12-18 17:14:15

标签: php http browser-detection

这是我当前的代码,但运行时出现解析错误?我刚刚犯了一个愚蠢的错误,或者这不起作用?提前谢谢。

<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php 
browser();
function browser() {
    $browsers = array('chrome', 'msie', 'firefox', 'safari');
    for ($i = 0; $i < $browsers.length + 1; $i++) {
        if (SERVER['HTTP_USER_AGENT'] == $browsers[$i]) {
            echo "You are using {$browsers[$i]}.";
        }
    }
}
?>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

您的代码存在一些问题。第一个$browsers.length不是PHP中计算值的方式。似乎.length是JavaScript格式?它应该是count($browsers)。此外,如果SERVER['HTTP_USER_AGENT']$_SERVER['HTTP_USER_AGENT'],则为echo。我还更改了您的browser(); function browser() { $browsers = array('chrome', 'msie', 'firefox', 'safari'); for ($i = 0; $i < count($browsers) + 1; $i++) { if ($_SERVER['HTTP_USER_AGENT'] == $browsers[$i]) { echo "You are using " . $browsers[$i] . "."; } } } 格式,以便更具可读性。这应该不会完全失败:

for

但如果我是你,我会使用in_array而不是browser(); function browser() { $browsers = array('chrome', 'msie', 'firefox', 'safari'); if (in_array($_SERVER['HTTP_USER_AGENT'], $browsers) { echo "You are using " . $_SERVER['HTTP_USER_AGENT'] . "."; } } 循环来理解你的逻辑:

for

基本上,对于所呈现的逻辑,in_array循环过多。只需使用$_SERVER['HTTP_USER_AGENT']检查$browsers实际上是{{1}}的价值。

也就是说,浏览器检测并不像您的整体逻辑所暗示的那么简单。但这至少解决了你最直接的PHP问题,为你提供了一些基础。