如何在web中检测用户操作系统/浏览器信息(使用php,js,html)

How to detect the user OS/browser info in web(using php, js, html)?

本文关键字:使用 信息 php 浏览器 html js web 检测 操作系统 用户      更新时间:2023-09-26

我们制作了两个版本安装包,win-32.msi和win-64.msi,并将它们放在我们的网站供用户下载。

但我只想使用一个网络链接。当用户使用Windows-32位操作系统单击链接时,他将获得win-32.msi,使用Windows-64位操作系统将获得win-64.msi。

我们在Web代码中使用php,js,html,在apache中设置。

我们之前使用过一种方法:browsercap.ini。但是我们发现win10中的IE8-64位浏览器给了我们win8-32位信息,这是错误的。

那么还有其他解决方案吗?

在 Javascript 中,您可以使用 navigator 对象来获取有关本地系统的一些信息:

console.log(navigator.appVersion);    

在我的系统上,这会产生:

5.0(麦金塔;Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36

然后,您可以解析此内容以确定将用户发送到何处。

作为替代方案,您也可以通过使用mod_rewrite并查看HTTP_USER_AGENT变量来在Apache中执行此操作。有关此内容的详细信息,请参阅mod_rewrite文档。

这样的事情可以工作:

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

这更多地是为了显示基本功能,您可能希望微调应与 64 位客户端匹配的(WOW64|OtherMatch)字符串,不确定WOW64是否匹配所有 Windows 64 位浏览器。此外,我将URLRewriteRule中的win-32.msi包相匹配,这将是默认包,如果 64 位客户端尝试获取它,它将被重定向到 64 位版本。根据您的站点,您可能希望以不同的方式处理此问题。