2013-10-16 87 views
0

我們製作了兩個版本的安裝包,win-32.msi和win-64.msi,並將它們放到我們的網站供用戶下載。如何檢測網頁中的用戶操作系統/瀏覽器信息(使用php,js,html)?

但我只想使用一個網頁鏈接。當用戶使用windows-32bit操作系統點擊鏈接時,他會得到win-32.msi,使用windows-64-bit操作系統會得到win-64.msi。

我們在我們的web代碼中使用php,js,html,在apache中設置。

我們之前使用過的方法是:browsercap.ini。但是我們在win8-64bit中發現IE10瀏覽器給我們win8-32bit的信息是錯誤的。

那麼還有其他解決方案嗎?

+0

請鏈接: http://stackoverflow.com/questions/17641454/php-browser-and-os-detection-showing-chrome-instead-of-opera 可能是這將幫助你 – avinash

+0

非常感謝。我想知道OS位版本,32或64. browsercap.ini有完整的信息。它在幾乎所有的時間都運行良好,但是win8-64 IE10會是錯誤的。 –

回答

1

在Javascript中你可以使用navigator對象來獲取有關本地系統的一些信息:

console.log(navigator.appVersion);  

在我的系統這產生了:

5.0(Macintosh上;英特爾的Mac OS X 10_8_4)爲AppleWebKit/537.36(KHTML,例如Gecko)Chrome瀏覽器/ Safari瀏覽器30.0.1599.69/537.36

然後可以解析這個工作,從哪裏發出的U SER。

1

正如你在Apache做到這一點的替代,以及通過使用mod_rewrite並查看HTTP_USER_AGENT變量。有關這方面的更多信息可以在mod_rewrite文檔中找到。

像這樣的東西可以工作:

RewriteEngine On 

RewriteCond %{HTTP_USER_AGENT} (WOW64|OtherMatch) 
RewriteRule ^(/path/to/dl-packages)/win-32.msi $1/win-64.msi [R,L] 

這更顯示基本consept,你可能要微調(WOW64|OtherMatch)字符串應該與64位客戶,不知道是否WOW64會匹配所有Windows 64位瀏覽器。另外,我將URL與我的RewriteRule中的win-32.msi包匹配,這將是默認包,如果64位客戶端嘗試獲取它,它將被重定向到64位版本。根據你的網站,你可能想要以不同的方式處理。

相關問題