【问题标题】:Detect OS, Browser, Adobe Reader, Bandwidth, etc [closed]检测操作系统、浏览器、Adobe Reader、带宽等 [关闭]
【发布时间】:2013-03-12 18:04:32
【问题描述】:

基本上,我正在尝试为一些在线程序创建兼容性测试,我希望用户查看它们是否与我现有的系统兼容,就像在here 中找到的那样。

我在网站上使用 WordPress,但找不到允许检测所有这些内容的插件、PHP 或 Javascript 源。该网站可能正在使用 ASP,但我认为这也应该可以通过 PHP 检测到,对吗?

【问题讨论】:

  • 这个问题太宽泛了。这就像八个问题合二为一:浏览器版本、计算机平台、Adobe Reader、Adobe Flash Player、Cookie 支持、脚本支持、连接速度、当前日期/时间。 BrowserHawk 是一个在测试能力方面做了很多工作的工具
  • 您好,感谢您的回复。我研究了 Browserhawk,但它对于云服务来说相当昂贵,但很高兴知道它可以做到。

标签: php browser operating-system detect


【解决方案1】:

通过查看$_SERVER['HTTP_USER_AGENT'],可以使用用户代理检测操作系统。浏览器也进入了 User-Agent。 Adobe Reader 无法使用 php 读取,但使用 navigator.plugins 对象中的 JavaScript。带宽不容易检测。

关于用户代理,我当前的一个是这个:

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0

这意味着我在 Windows 7 x64 上使用 19.0 版的 Firefox。

为了通过插件检测实际的 Adob​​e Reader 版本循环并在我的情况下查找名称(属性)Adobe Acrobat navigator.plugins[2].version 返回 10.1.6.1.

关于带宽,您可以尝试下载数据并测量需要多长时间。但请注意,在某些情况下,您会浪费用户的流量,尤其是在移动设备上。但是,您应该避免在大多数情况下实际带宽并不重要。

【讨论】:

    【解决方案2】:

    http://thecodeabode.blogspot.ca/2011/01/detect-adobe-reader-plugin.html

    大部分与上面的答案相同,使用 navigator.plugins 可以检测 Adob​​e Reader 之类的东西。但是,要检测带宽,您需要创建一个定时脚本来记录检索文件所需的时间。例如http://api.jquery.com/jQuery.ajax/ 可以通过javascript加载图片,也可以通过PHP制作图片文件。

    <?php
    $time = microtime();
    $time = explode(' ', $time);
    $time = $time[1] + $time[0];
    $start = $time;
    $file = '../image.jpg';
    $type = 'image/jpeg';
    $ts = gmdate("D, d M Y H:i:s") . " GMT";
    header("Expires: $ts");
    header("Last-Modified: $ts");
    header("Pragma: no-cache");
    header("Cache-Control: no-cache, must-revalidate");
    header('Content-Type:'.$type);
    header('Content-Length: ' . filesize($file));
    readfile($file);
    $time = microtime();
    $time = explode(' ', $time);
    $time = $time[1] + $time[0];
    $finish = $time;
    $total_time = round(($finish - $start), 4);
    ?>
    

    这将计算服务器/客户端加载输出图像所需的时间。 在 $total_time 之后,您可以将加载 6MB 图像所需的时间放入 mysql 等数据库中。然后将 SIZE 除以 TIME。因此,如果需要 2 秒,他们会说是 3Mbps 连接。 补充:

    8 Bits = 1 Byte
    1024 Bytes = 1 KiloByte
    1024 KiloBytes = 1 MegaByte
    1024 MegaBytes = 1 GigaByte
    1024 GigaBytes = 1 TeraByte
    

    因此,如果假设用户在 1 秒内加载 1MB,请尝试 2​​MB,依此类推。 但如果需要更长的时间。说 14 秒下载 1MB 除 1/14

    0.125MB = 1 megabit
    6/0.125/1 = 48 Mbit(Mbps)
    1/0.125/14 = 0.57Mbit
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多