2010-03-25 147 views
2

是否可以检测是否使用PHP安装了闪存。我的目标是,如果它被安装,它会播放一个flv文件,如果不是,它会使用另一个播放器,例如; QuickTime的?如果可能的话,我该如何去做呢?PHP检测是否安装了闪存

感谢 汤姆

回答

7

,还是有一些更好的方法 -

使用SWFObject嵌入您的.swf文件。这几乎是现在的行业标准,没有人知道他们在做什么使用预先构建的Flash嵌入代码。

SWFObject将帮助你的原因是,你基本上告诉它去你的网站上找到一个div,并用包含嵌入式Flash的div替换它。如果用户没有安装Flash,没有问题 - 它只是继续显示原始的div。

这个想法是,你把你的ALT内容放入将被你的.swf替换的div中。这工作非常好,应该是你所需要的完美。

+1

当前(2013年1月)的SWFObject V2.2链路现在是http://code.google。 com/p/swfobject/ – jdh 2013-01-04 14:46:33

6

您不能确定在服务器端(PHP运行在那里)。您将不得不在客户端使用JavaScript检测它,然后在客户端执行想要的步骤或使用json/ajax/...将请求的结果传回到服务器。

您可以下载Flash Player Detection Kit从Adobe

2
**Steps to get Javascript value in PHP code** 

Using SWFObject JS file, you can get the playerversion (if flash player exists). 

// Code to identify whether flash player installed or not 
var playerVersion = swfobject.getFlashPlayerVersion(); 

// set a cookie in Javascript and reload your page 
document.cookie="flashplayer_status" + "=" + playerVersion.release; 

// Finally - We can get the Javascript cookie value 
// Whether Flash player is Installed in your 
// System or not using PHP .. 

echo $_COOKIE['flashplayer_status']; 

//Thats it! 
2

编辑:你不应该依赖于接受头为@bishop mentionned。

它仅适用于可靠IE浏览器(和它不应该;)因此)

的唯一方法是一些JavaScript逻辑。

为IE遗留码:

“应用程序/ x-冲击波闪光”

if(preg_match('/x-shockwave-flash/',$_SERVER['HTTP_ACCEPT'])) { 
    /* flash logic comes here */ 
} else { 
    /* no-flash logic comes here */ 
} 
+0

我试过你的方法。使用flash启用$ _SERVER ['HTTP_ACCEPT']'给我'text/html,application/xhtml + xml,application/xml; q = 0.9,*/*; q = 0.8'。所以不幸的是,它不起作用。 – 2014-03-30 20:46:47

+0

[HTTP Accept确定请求的相应*响应*类型。而不是浏览器的功能。](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html) – bishop 2015-05-12 13:46:54