2010-06-10 49 views

回答

5
<?php 
echo $_SERVER['HTTP_USER_AGENT']; 
?> 

正如Palantir所說,另外還有一個get_browser函數,您可以在其中檢查瀏覽器中啓用的功能。

+0

請記住,用戶代理很容易欺騙。 – nico 2010-06-10 16:27:06

2

請參閱get_browser()

<?php 
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n"; 

$browser = get_browser(null, true); 
print_r($browser); 
?> 
2

總而言之,你不能。你當然可以嘗試得到它,你幾乎可以肯定地得到看起來像你想要的東西;但是絕對沒有辦法檢查這些信息是否正確。當您收到用戶代理字符串時,另一端的瀏覽器可能是真實的,或者它可能在說謊。在處理用戶時,總是假定它實際上在說謊。

解決這個問題沒有「最好的辦法」,但是你最想做的就是用各種各樣的瀏覽器測試你的網站,使用可移植的HTML和CSS技術,如果你絕對必須的話,填寫洞與JavaScript。

選擇根據什麼瀏覽器發送到瀏覽器的數據認爲是這是一個壞主意™。

+2

我不同意有時有理由針對某些瀏覽器,因爲它們有時具有不同的功能,用戶的瀏覽器會報告任何想要的內容,如果用戶希望更改該內容,那麼他​​會得到錯誤的內容並最終破壞功能。用戶不這樣做,如果他們這樣做,那麼他們知道他們在做什麼以及期望什麼。事實上,整個網絡都基於某種信任,用戶比使用桌面軟件時擁有更多的權力,這是遊戲的一部分。想想推薦人,cookies,javascript支持等等...... – Palantir 2010-06-10 13:20:40

+0

@Palantir:阿門,兄弟。 – nickf 2010-06-10 13:52:18

+2

身份!=能力。檢查功能,而不是名稱。 – 2010-06-10 15:09:22

3

您需要創建函數來將用戶代理數據到瀏覽器的通用名稱

例如,$_SERVER['HTTP_USER_AGENT']可以返回 Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*是火狐 或 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.55 Safari/533.4是Chrome的

細節爲您提供渲染引擎,代碼庫,版本,操作系統等...

我建議使用preg_match和/或已知瀏覽器列表是你想要做的事情,如

echo browserCommonName($_SERVER['HTTP_USER_AGENT']); 輸出「Google Chrome」。

browserCommonName($ userAgent)需要一個已知瀏覽器的列表。

編輯:剛纔注意到get_browser buit到php做到這一點,我不好的不讀線程。