关于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';
}

行吧 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值