我正在創建一個網站,允許用戶通過JavaScript插件查看文件。Php複製CPU消耗
要做到這一點,並保持文件的安全性,每次訪問JavaScript插件時,我都會創建原始文件的一次性唯一副本。
原始文件最大爲30mb,這將如何擴展系統的多個用戶?說100個人是否要創建並訪問該文件的副本。
我正在創建一個網站,允許用戶通過JavaScript插件查看文件。Php複製CPU消耗
要做到這一點,並保持文件的安全性,每次訪問JavaScript插件時,我都會創建原始文件的一次性唯一副本。
原始文件最大爲30mb,這將如何擴展系統的多個用戶?說100個人是否要創建並訪問該文件的副本。
您可以通過創建一個htaccess的重寫用戶指PHP腳本做到這一點:
RewriteEngine On
RewriteRule ^download/([^/]+) /lib/download.php?file=$1 [QSA]
這將轉發任何請求yourdomain.com/download/anyfilehere.mp3?one_time_token=ABCDEFG
到lib/download.php
並設置$_GET['file']
是anyfilehere.mp3
。 one_time_token
$_GET
參數將被轉發,因爲我們使用[QSA]
。
的download.php
可以簡單地是這個樣子:
<?php
if (!empty($_GET['file'])) {
if (!empty($_GET['one_time_token'])) {
if (TokenOK($_GET['one_time_token'])) { //Create a function called TokenOK where you look up the download token in eg. a database
$fileName = '/var/www/downloadfolder/' . $_GET['file'];
if (file_exists($fileName)) {
ExpireToken($_GET['one_time_token']); //Create a function called ExpireToken where you expire the token in eg. the database
readfile($fileName); //Read the file to the user
die();
} else {
die('Error: file not found');
}
} else {
die('Error: token is not OK');
}
} else {
die('Error: token is not specified');
}
} else {
die('Error: file is not specified');
}
?>
需要考慮的事情:
readfile
只要不使用寫訪問,我無法想象使用原始文件會不安全的情況嗎? – bwoebi
@bwoebi什麼OP提到可能會有用的情況下,有人會創建一個服務提供音樂/聲音,但要確保他們不能複製粘貼到MP3的URL,然後將MP3送達給他們(或分享鏈接到MP3文件)。 – h2ooooooo
@ h2ooooooo mod_rewrite到一箇中央的PHP文件,它可以訪問磁盤上的其他數據? – bwoebi