2011-04-28 91 views
3

我在我的網站有.mp3文件,我想設置我的網站,以便我的用戶登錄後,他們可以下載文件。如果用戶沒有登錄,他們將無法下載文件。我不希望任何人能夠找到文件的路徑。允許登錄用戶在PHP下載文件否則沒有人不能

+0

可能重複[限制文件訪問授權的php用戶](http://stackoverflow.com/questions/738500/restrict-file-access-to-authorized-php-users) – deceze 2011-04-28 03:43:21

+0

只有當你登錄,或允許下載的人誰(不是你)? – 2011-04-28 03:48:35

回答

2
  • 將MP3文件放在您的文檔根目錄上,或者如果不可能,請用.htaccess(如果使用Apache)拒絕訪問它們。
  • 確認用戶已登錄。
  • 當用戶請求文件時,在MP3上發送相應的標題和readfile()
+0

在DOCUMENT_ROOT之外保存mp3會不會更容易?那麼就沒有必要使用.htaccess了,是嗎? – 2011-04-28 03:46:54

+4

@teresko第一句話說什麼? – alex 2011-04-28 03:47:21

+0

有點取決於你對「上面」的定義,特別是因爲/是「根」。 – 2011-04-28 04:22:21

2

您可以根據用戶會話ID和某個隨機值等內容創建令牌。然後,登錄的用戶的URL會是這樣:

/download.php?token=4782ab847313bcd 
8

我會做不可能的文件僅僅通過一個HTTP請求訪問,並與PHP,只是把它打印出來:

<?php 
session_start(); 
if (isset($_SESSION['logged_in'])) { 
    $file = '/this/is/the/path/file.mp3'; 

    header('Content-type: audio/mpeg'); 
    header('Content-length: ' . filesize($file)); 
    readfile($file); 
} 
?> 
+0

不是['readfile()'](http://php.net/manual/en/function.readfile.php)的粉絲? – alex 2011-04-28 03:48:11

+0

不是PHP的粉絲。我只是用PHP的基本知識來做這件事,但是感謝這個功能。 PHP有很多;) – Blender 2011-04-28 03:51:44

+1

PHP具有一切功能。 :) – alex 2011-04-28 03:53:32

相關問題