检测操作系统,浏览器,Adobe Reader,带宽等

时间:2013-03-12 18:04:32

标签: php browser operating-system detect

基本上,我正在尝试为某些在线程序创建一个兼容性测试,我希望用户看看它们是否与我所拥有的系统兼容,就像找到它here一样。 / p>

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

2 个答案:

答案 0 :(得分:1)

通过查看$_SERVER['HTTP_USER_AGENT'],可以使用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。

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

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

答案 1 :(得分:0)

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

与上述答案相同,使用navigator.plugins可以检测Adobe 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之后,您可以将诸如mysql之类的数据库放入他们加载6MB图像所需的时间。然后将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,请尝试2MB,依此类推。 但如果需要更长时间。说14秒下载1MB Divide 1/14

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