关于PHP的$_SERVER{'HTTP_USER_AGENT'}匹配不到Mozilla的奇怪bug

今天在玩耍PHP,根据官方手册http://php.net/manual/zh/tutorial.useful.php,编写了一个脚本

具体就是根据$_SERVER{'HTTP_USER_AGENT'}的返回值,判断浏览器的种类,输出相应的信息,首先来看看这个变量在我的QQ浏览器上反悔了什么

<?php
header("Content-Type: text/html; charset=utf-8");
echo '<p>Hello World</p>';
echo '<p>';
echo $_SERVER{'HTTP_USER_AGENT'};
echo '</p>';

当我看见Mozilla,我的记忆中那好像和火狐浏览器有关,此刻我并没有在意为什么我的QQ浏览器会显示Mozilla,学着官网写了一段判断浏览器类型的代码

if(strpos($_SERVER{'HTTP_USER_AGENT'}, 'Mozilla') != FALSE) {
    echo '正在使用火狐浏览器';
}

然后重新运行,发现语句并没有执行成功,经过我的各种尝试,$_SERVER{'HTTP_USER_AGENT'}的一长串返回值中,任何字符串都是可以成功匹配的,比如QQBrowser、Chrome、Safari

if(strpos($_SERVER{'HTTP_USER_AGENT'}, 'QQ') != FALSE) {
    echo '正在使用QQ浏览器';
}
if(strpos($_SERVER{'HTTP_USER_AGENT'}, 'Safari') != FALSE) {
    echo '正在使用Safari浏览器';
}
if(strpos($_SERVER{'HTTP_USER_AGENT'}, 'Chrome') != FALSE) {
    echo '正在使用谷歌浏览器';
}

甚至“ozilla”都是可以匹配到的,唯有“Mozilla”这个单词匹配不到,在网上进行了一番搜索都没有找到答案,我甚至还看完了浏览器为什么user agent信息都带着Mozilla的原因

https://www.zhihu.com/question/19553117

扯远了,扯回来,再次尝试debug

写了一个echo语句,看一下strpos($_SERVER{'HTTP_USER_AGENT'}, 'Mozilla')到底返回什么

echo strpos($_SERVER{'HTTP_USER_AGENT'}, 'Mozilla');

返回值是0,表示子字符串在0位置出现,一切都没有问题

突然电光火石之间我想起了一个关于JavaScript三位一体的传说

 所以有没有可能在PHP里面(0 == False)呢,实验了一下

if (0 == FALSE) {
    echo 'WTF';
}

行吧 

猜你喜欢

转载自blog.csdn.net/jiangxuege/article/details/81907128