好的,所以我正在處理我公司的一些代碼回購,我在登錄檢查中偶然發現了這一點瀏覽器檢測。這非常多,特別是搜索MSIE,並且如果瀏覽器版本爲<= 6
,則希望拒絕登錄。目前這是一個相當有缺陷的概念。看到該方法採用用戶代理字符串並刪除除版本號之外的所有內容,但本例中的版本號是單個數字,對於版本1-9檢測非常有用。但是,對於Internet Explorer 10,結果爲1,從而違反了邏輯並使其無效。PHP瀏覽器檢測IE瀏覽器> 6
所以現在我堅持努力保持這種邏輯在大多數情況下是相同的,但在本質上補償,將需要2位的版本,如10+
它是一個很長一段時間,因爲我」我做了任何特定版本的瀏覽器檢測。所以我希望有人能夠幫助我調整這一點,或者指向我可能會在同一個莊園中使用的更好/更新的功能。
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$ua = $_SERVER['HTTP_USER_AGENT'];
if (strstr($ua,'MSIE') && substr($ua,strpos($ua,'MSIE')+5,1) <= 6) {
return $this->renderMessage(
self::TEXT_LOGIN_FAILED,
'It seems that your browser is currently unsupported. We apologize for any inconveniences. Please switch to another browser and try again.'
);
}
}
以上就是我目前的工作,你可以看到它有點亂,是誰做的本來沒想到遠頭有臉的人。而且我堅持不想破壞它,因爲我想保持它的相似性,但如果這樣做沒有任何意義的話,則不會。
使用'preg_match'提取字符串('/ [0-9] {1,2} /')的1或2位部分,並見如果那小於6. –
你是否必須這樣做?我的意思是,依靠來自'HTTP_USER_AGENT'的正確數據通常不是一個好主意...... – Jasper
preg_match可能無法正常工作,因爲完整的用戶代理字符串會有多個匹配的數字,例如:'Mozilla/5.0(compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0'。@Jasper no我不需要依賴user_agent,只要有一種方法可以得到一個版本(如果有的話) – chris