【发布时间】:2021-01-24 08:26:32
【问题描述】:
我想阻止所有 Internet Explorer 版本和旧版 Microsoft Edge(Edge Chromimum 除外)访问我的网站
感谢一个旧帖子,我从这个开始,但我找不到如何在不阻止 Edge chromium 的情况下阻止 Edge:
if(preg_match('/(?i)(msie [0-9]+)|(Trident\/[0-9]+)/', $_SERVER['HTTP_USER_AGENT'])) {
// Error message
}
else {
// Login form
}
【问题讨论】:
-
您知道用户代理很容易被欺骗吗?大多数普通用户不会这样做,但任何知识渊博的人,或者知道如何使用搜索引擎查找的人都可以轻松绕过这一点。此外,为什么要阻止(旧)Edge?您是否设法使用它不支持的功能构建了一些东西?为什么不实施后备?否则,您只是潜在地排除了用户,并且对于大多数网站来说这是一件坏事(因为他们想要客户/访问者)。
-
谢谢!该解决方案旨在在内部(内部网站)使用并强制更改浏览器,我有时会收到投诉,因为一些 JS 功能错误或 CSS 不好,但这大部分时间都发生在他们的浏览器上(我不'不用我动手,有美国、西班牙、德国等几个实体)
-
好吧,如果这是一个公司环境,那么您当然可以确保使用组策略来升级每个人的 Windows 10,以便它包含最新的 (Chromium) 版本的 Edge?然后问题就消失了。
-
我明白了。您唯一能做的就是试验两个版本的 Edge - 使用它们向测试页面发送请求,并查看它们的用户代理字符串是否不同。如果它们没有不同,那么您无法在服务器端区分它们。在这种情况下,作为替代方案,您可能可以在站点中嵌入一点点 JS,它可以告诉您在页面加载时浏览器支持什么(甚至是哪个浏览器),并且然后在此时向用户弹出一条消息,说他们需要使用不同的浏览器。
-
但我不知道具体是如何做到的,这不是我个人不得不面对的问题。因此,除非有其他知道的人出现在这里,否则您可能需要花一点时间进行研究,如果失败,请在此处使用相关标签提出有关该主题的不同问题。
标签: php http internet-explorer user-agent