2010-03-25 199 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