【问题标题】:How do I detect Mobile Safari server side using PHP?如何使用 PHP 检测 Mobile Safari 服务器端?
【发布时间】:2010-09-16 05:59:11
【问题描述】:

Mobile Safari 是一款功能非常强大的浏览器,它可以完美地处理我的网站。但是,我的页面上有一些元素可以针对使用此设备进行浏览进行优化;例如提供比桌面版更小的特定缩略图,以帮助将更多内容放入屏幕。

我想知道如何使用 PHP 检测 Mobile Safari(最好是所有版本),然后我可以提供 a) 特定 css 文件和 b) 不同大小的图像缩略图。

【问题讨论】:

    标签: php iphone optimization mobile-safari


    【解决方案1】:

    感谢 Joe,我阅读了该页面并找到了 WebKit detection library(在 JavaScript 中)。我更改了代码以满足我的需要。

    对于任何感兴趣的人,这是我的解决方案。

    <?php
    
    /* detect Mobile Safari */
    
    $browserAsString = $_SERVER['HTTP_USER_AGENT'];
    
    if (strstr($browserAsString, " AppleWebKit/") && strstr($browserAsString, " Mobile/"))
    {
        $browserIsMobileSafari = true;
    }
    
    ?>
    

    【讨论】:

    • 但是如果 JavaScript 被关闭了呢?
    • @Matt - 检测是在服务器端完成的,您没有正确阅读我的帖子 - 我更改了代码以满足我的需要,如查找字符串“AppleWebKit/”和“Mobile/” .
    【解决方案2】:
    $_SERVER['HTTP_USER_AGENT']  
    

    这将为您返回用户代理字符串,您可以将其与移动 safari 进行比较。

    附言http://wurfl.sourceforge.net/ WURFL 可以帮助您确定您想要的 UA。

    【讨论】:

    • DeviceAtlas 是 WURFL 的另一种替代品
    【解决方案3】:

    将用户代理字符串与 Safari Mobile 使用的字符串进行比较:

    Safari Mobile User Agent String

    【讨论】:

    • 您的链接似乎不再有效.. 它只是重定向到开发人员的 safari 的首页。
    • 这是更新后的信息链接:developer.apple.com/safari/library/documentation/…
    • 链接已失效。请考虑引用此类事件的必要部分。
    • 只有链接的解决方案是无效的,事实上,请按照指南如何回答这些问题。始终使用链接或更好的方式添加上下文:只需添加上下文,因为链接通常会过期。
    【解决方案4】:

    我发布了一种新模式来检测任何编程语言(JSP、PHP、Perl、Python .....)的设备,它被称为 Apache Mobile Filter 是一个 Apache 模块 (http://modules.apache.org/search.php?id=1787),它可以检测移动设备和还可以使图像适应设备的屏幕尺寸。

    欲了解更多信息:http://www.idelfuschini.it/it/apache-mobile-filter-v2x.html

    【讨论】:

      【解决方案5】:

      Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0 是 palm Pre 的浏览器,以及没有“移动”一词。

      我正在努力使我的检测功能与所有更新的浏览器完全兼容。在查看了 mytouch、G1、Palm Pre、droid 和其他(但不是全部)之后,我现在确信这适用于所有新手机:

      if(preg_match("/applewebkit/i", $_SERVER['HTTP_USER_AGENT']) && preg_match("/(mobile|pre)/i", $_SERVER['HTTP_USER_AGENT'])) header("位置:http://simplefoodie.com/iphone/?carryover=".urlencode($_SERVER[REQUEST_URI]));

      【讨论】:

        【解决方案6】:
        <?php
        
        // detect Safari only!
        
        $string = $_SERVER['HTTP_USER_AGENT'];
        
        if (strstr($string, " AppleWebKit/") && strstr($string, " Safari/") && !strstr($string, " CriOS"))
            {
                echo 'See in Safari only';
            }
        
        ?>   
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-05-17
          • 1970-01-01
          • 1970-01-01
          • 2018-04-30
          • 1970-01-01
          • 2010-10-06
          • 2016-01-06
          相关资源
          最近更新 更多