關於PHP的$_SERVER{'HTTP_USER_AGENT'}匹配不到Mozilla的奇怪bug
阿新 • • 發佈:2018-11-13
今天在玩耍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';
}
行吧