PHP 用户正在使用的浏览器


PHP What browser the user is using?

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

<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>

你的代码有几个问题。 首先$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] . ".";
        }
    }
}

但是如果我是你,我会使用in_array而不是for循环来处理你的逻辑:

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中。

也就是说,浏览器检测并不像您的整体逻辑所暗示的那么简单。 但这至少解决了你最直接的PHP问题,让你有一些东西可以构建。