因此,可以伪造用户代理.还行..是否有正当理由为什么我不应该使用 php 来检测浏览器


So the user agent can be faked.. Ok... is there a valid reason why I shouldn't use php to detect the browser?

我一直不明白为什么有些人说为每个浏览器制作自定义css是一件坏事。为了减小我的页面大小并加快下载时间,对我来说,为主要浏览器(尤其是许多不同形式的IE)制作自定义css是完全有意义的,并且对于其他所有内容进行一般捕获所有css。

如果你想发出一把臃肿的、巨大的、css 世界的瑞士军刀,那么在所有情况下,我不会阻止你。

执行此操作时,快速检测浏览器很重要。加载JavaScript文件来检测浏览器似乎很慢。所以我更愿意使用 php 来检测浏览器,并发送指定的 css。或者至少一个通用的浏览器特定的css,然后使用JavaScript加载更详细的css版本。

但是我已经读了一篇又一篇文章,关于为什么这是一件坏事。这些文章背后的主要原因是因为用户代理可以被伪造。或者在那里使用Firefox,但服务器认为他们使用的是IE7,所以它发送了错误的css文件。

作为 Web 应用程序的开发人员/设计人员,为什么这是我的问题?如果你想使用Firefox,但告诉我的服务器你使用的是safari或IE*,并且得到一个看起来很糟糕的页面,为什么这是我的问题?

如果用户看不到你的网站,

他们永远不会回来,或者对我进行某种类似的争论,请不要抛出整个网站。 普通用户不会这样做。 只有知道如何做到这一点的人,当我的网站看起来很糟糕时,他们才会知道出了什么问题。

这类似于在旧的Apple II上查看我的网站(我不知道如何),并对我大喊大叫,因为所有东西看起来都是绿色的。

那么有没有一个很好的理由,而不是个人喜好,为什么我不应该使用 php 来检测浏览器并发送自定义的 css 文件?

我主要为不同版本的IE执行此操作。对于某些站点,添加 if IE6 和 if IE7 部分只是 css 文件大小的两倍或三倍。

通常,当用户故意伪造用户代理字符串时,这是因为用户浏览器中本应可见的某些内容。 例如,某些站点可能会将用户限制为 IE 或 Firefox,但用户使用的是 Debian 上的 Iceweasel。 Iceweasel只是由于商标原因而重命名的Firefox(还有其他一些更改),因此该网站没有理由无法工作。

意识到发生这种情况是由于(错误的)浏览器检测,而不是尽管它。 我想说你不需要非常关心这个问题。 此外,如果你能让你的网站合理地跨浏览器兼容,那就完全不重要了。 如果您真的想使用特定于浏览器的 CSS,并且您不想在一个 CSS 文件中全部这样做,请不要让虚假的用户代理阻止您。

只要您唯一要做的就是更改样式表,据我所知,就没有正当理由。如果您尝试通过浏览器提供自定义安全措施,则会遇到问题。

不确定php,但在Rails中,根据用户代理提供css文件和不同的布局是正常而简单的实践,特别是考虑到您的网站同样可能被无数可用的移动设备中的任何一个访问,更不用说为最流行的(目前是Firefox)浏览器编写,甚至在需要时编写自定义MIME类型也非常简单。

IMO不这样做纯粹是编码人员的懒惰,但并非所有网站都是由专业的开发团队开发的,手头有造型大师。同样在Rails以外的语言中,它可能不是那么简单。抱歉,我对PHP一无所知,所以这可能不是一个合适的回复

在我看来,从规范化.css开始,并有一个基本样式表开始,根据需要覆盖基本样式通常与确保设置适当的回退一起工作。如果您真的需要,一些媒体查询和功能检测可以走很长的路。

你不应该基于浏览器的一个原因是因为谷歌和雅虎等主要搜索引擎禁止为不同的浏览器显示不同的内容。GoogleBot可以检测不同的CSS和HTML,您可能会得到糟糕的搜索定位。此外,如果您使用任何广告服务,则可能会通过显示不同的内容来违反他们的合同。