【发布时间】:2010-03-25 12:37:55
【问题描述】:
是否可以检测是否使用 PHP 安装了 flash。我的目标是,如果安装了它,它将播放一个 flv 文件,如果没有,它将使用另一个播放器,例如;快速时间?如果可能的话,我该怎么做?
谢谢 汤姆
【问题讨论】:
是否可以检测是否使用 PHP 安装了 flash。我的目标是,如果安装了它,它将播放一个 flv 文件,如果没有,它将使用另一个播放器,例如;快速时间?如果可能的话,我该怎么做?
谢谢 汤姆
【问题讨论】:
有一个更好的方法来解决这个问题 -
使用 SWFObject 嵌入您的 .swf 文件。如今,这几乎是行业标准,没有人知道他们在做什么使用预构建的 Flash 嵌入代码。
SWFObject 可以帮助您的原因是您基本上告诉它在您的网站上查找一个 div 并将其替换为包含嵌入式 Flash 的 div。如果用户没有安装 Flash,没问题 - 它只是继续显示原始 div。
然后,想法是您将您的 alt 内容放入将被您的 .swf 替换的 div 中。这非常好用,应该非常适合您的需要。
【讨论】:
您无法在服务器端(PHP 运行的地方)确定这一点。您必须在客户端使用 JavaScript 检测它,并在客户端执行所需的步骤或使用 json/ajax/... 请求将结果传回服务器
您可以从 Adobe 下载Flash Player Detection Kit
【讨论】:
**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!
【讨论】:
编辑:您不应该像@bishop 提到的那样依赖接受标头。
它只在 IE 浏览器上可靠地工作(它不应该;))
因此,唯一的方法是一些 Javascript 逻辑。
IE 的旧代码:
“应用程序/x-shockwave-flash”
if(preg_match('/x-shockwave-flash/',$_SERVER['HTTP_ACCEPT'])) {
/* flash logic comes here */
} else {
/* no-flash logic comes here */
}
【讨论】:
$_SERVER['HTTP_ACCEPT'] 给了我text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8。所以很遗憾,它不起作用。
PHP 无法检测到这一点...只有 javascript 可以。
http://www.adobe.com/support/flash/how/shock/javaplugs/index.html
【讨论】:
如果你可以使用 javascript 比 jquery 更简单的解决方案。
jQuery.browser.flash
【讨论】: