2009-07-31 81 views
0

我編碼的網站有視頻和音頻文件,我需要人們能夠觀看/收聽這些文件,如果他們登錄在php/mysql登錄但我不想要避風港的人註冊爲能夠下載文件,我需要能夠阻止對文件的直接訪問,並且只允許用戶使用帳戶訪問它們。隱藏視頻和MP3文件

回答

0

我與斯科特同意。 Flash可能是要走的路線 - 絕大多數人都安裝了Flash插件。還有Java,但我的經驗與Flash。

我對你的問題有點不確定,所以讓我澄清我的回答。您可以提供流式傳輸音頻和視頻的方式,也可以提供自行下載文件的方式。通過流媒體我的意思是你的網站上有一個Flash播放器可以播放音頻和視頻,但不會將它們保存到硬盤中。您可以爲註冊用戶和客人提供此服務。你也可以(如果你喜歡)讓註冊用戶下載文件。

你可以讓用戶和客人看你的東西,併爲註冊用戶提供下載的能力,作爲獎勵註冊。也許你不想這樣做 - 也許你只是想讓註冊用戶看到你的東西,但不會下載它。這也可以做到。

Flash有兩種播放音頻和視頻的選項 - 漸進式和流式傳輸。漸進式是Flash從URL中播放音頻/視頻文件的地方(即http://www.example.com/video/video_1.flv)。 Flash下載視頻(就像瀏覽器一樣),然後播放它。下載的文件存儲在瀏覽器的緩存中。這不是你想要的。

流由NetStream和NetConnection類完成。這是一個真正的文件流,它不會保存到硬盤。流式傳輸類不使用HTTP,而使用RTMP,因此您需要一個閃存音頻/視頻服務器以及您的網絡服務器。

有,我知道的三種閃光視頻服務器 - Adob​​e的自己的Flash媒體服務器Wowza和Red 5

Adob​​e公司的服務器價格昂貴,可能是太昂貴了,如果這是一個非商業站點。

我使用Wowza。它對10個併發用戶是免費的(讓你的腳溼),也有無限的連接服務器,儘管價格爲1000美元,但對於非商業網站而言,它太昂貴了。

第三個是Red5。這是一款完全免費的開源閃存媒體服務器。我沒有這方面的經驗,所以我無法證實它的特點或穩定性。

所以是的,不幸的是它比一些簡單的PHP和HTML更有用。您可以構建自己的Flash播放器(客戶端查看器),也可以使用其他人構建的一個。

1

解決方法是不直接通過Apache爲這些文件提供服務,而是通過PHP (例如,從PHP腳本中,您知道是否嘗試下載該文件的人是否已登錄)

爲了是絕對肯定沒有人直接下載文件,至少有兩種解決方案:

第一個(最好的一個,我認爲):如果你可以把這些文件外您的Web服務器的根目錄:

/.../www/    <-- this is your web root (DocumentRoot, with Apache) 
/.../.../js/... 
/.../.../css/... 
/.../.../index.php 
/.../.../download.php 
/.../data/    <-- there, outside of the files served by Apache, you put your data 
/.../data/my-music.mp3 

第二個:您在‘數據’目錄使用.htaccess文件,拒絕來自通過Apache人的訪問權限;這樣的事情可以做:

Deny From All 


然後,您的download.php腳本(或同等)將獲得文件的ID,請檢查用戶的訪問權限,而且,如果用戶訪問所需的文件:

  • 發出正確的HTTP header S:
    • ,你可能會想至少要設置Content-Type的
    • 也許有些其他類似內容處置,內容長度,...
  • 發送文件的內容

當然,這取決於您是否確保該腳本,現在;-)


一點題外話:主要缺點是,更多的東西必須由PHP處理...可能會增加一些負載服務器:-(

+0

它適用於下載,但我想播放該網站上的文件,有沒有辦法做到這一點,或者我必須強制下載它? – Scott 2009-07-31 23:15:53