首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在服务器上检测OS X 10.4及更低版本

在服务器上检测OS X 10.4及更低版本
EN

Stack Overflow用户
提问于 2009-08-25 02:30:07
回答 2查看 1.3K关注 0票数 4

基于this,看起来很难让操作系统版本检测完全正确。然而,我正在寻找一些半像样的东西,它可以警告OS及以下版本的用户我的产品可能存在兼容问题。

我能想到的启发式方法是首先检测操作系统是否为Mac (相对简单),然后将用户代理与正则表达式10[/._][0-4]进行匹配,以检测Tiger及以下。我真的不关心用户代理被修改的情况--我想要一个公平的命中率来检测OS X的版本,而不是一个100%的解决方案。

是否有其他建议/建议?

此外,指向一个工具,通过为不同的OS版本+浏览器版本组合生成已知的用户代理字符串来帮助我测试这一点,这也是加分。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-25 02:50:59

嗯,我相信在这种情况下,使用带有最新php_browscap.ini的get_browser()函数是最明智的选择,但不能100%确定它是否会告诉您操作系统版本。

编辑:browscap.ini文件还为您提供了足够的用户代理字符串,如果您仍然决定自己完成所有解析工作的话。

编辑:似乎there is also a PHP implementation不需要您修改php.ini文件。

编辑:基于您提供给我的用户代理字符串,下面是我认为效果最好的代码:

代码语言:javascript
复制
if (preg_match('~Mac OS X (.*?);~', $_SERVER['HTTP_USER_AGENT'], $matches) > 0)
{
    $version = preg_replace('~[^0-9]+~', '.', trim($matches[1]));

    if (version_compare($version, '10.5', '>=') === true)
    {
        // ok
    }

    else
    {
        // not ok
    }
}

else
{
    // not Mac OS X
}
票数 1
EN

Stack Overflow用户

发布于 2009-08-25 02:50:12

还有其他的建议或建议吗?

是的,不要这样做。也许不是你想听的,但你是对的,这充其量是不可靠的。

由于天生懒惰,我会选择工作量最少的解决方案。下载链接旁边有一个很大的红色文本区,内容如下:

要当心。仅OS X 10.5或更高版本支持此产品。请不要尝试与早期版本一起使用。

然后让用户来决定。

如果你想进一步保护他们,一旦你的可执行程序在他们的机器上运行,就让它自己检查一下。我猜OS上有uname,或者是一个类似的工具,可以可靠地获取操作系统版本。如果在这一点上它不符合规范,您可以简单地退出,并显示类似的消息:

我警告过你了但是你不会听的。不管怎么说,你还是得去下载我,不是吗。好了,现在我根本不打算运行了,你已经浪费了所有宝贵的带宽。愚蠢的,愚蠢的人,现在走吧。

当然,你的错误信息可能比我的更圆滑:-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1325773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档