사용자가 자바 스크립트 플러그인을 통해 파일을 볼 수있는 사이트를 만들고 있습니다.PHP 복사 CPU 사용량
이 작업을 수행하고 파일의 보안을 유지하려면 JavaScript 플러그인에 액세스 할 때마다 원본 파일을 한 번만 복사하면됩니다.
원본 파일의 최대 크기는 30MB이며 시스템의 여러 사용자가이 파일을 어떻게 확장합니까? 100 명이 파일 사본을 만들고 액세스 할 수 있다고 가정 해보십시오.
사용자가 자바 스크립트 플러그인을 통해 파일을 볼 수있는 사이트를 만들고 있습니다.PHP 복사 CPU 사용량
이 작업을 수행하고 파일의 보안을 유지하려면 JavaScript 플러그인에 액세스 할 때마다 원본 파일을 한 번만 복사하면됩니다.
원본 파일의 최대 크기는 30MB이며 시스템의 여러 사용자가이 파일을 어떻게 확장합니까? 100 명이 파일 사본을 만들고 액세스 할 수 있다고 가정 해보십시오.
당신은 PHP 스크립트에 사용자를 참조하기 위해 htaccess로 재 작성을 작성하여이 작업을 수행 할 수 있습니다
RewriteEngine On
RewriteRule ^download/([^/]+) /lib/download.php?file=$1 [QSA]
이 lib/download.php
에 yourdomain.com/download/anyfilehere.mp3?one_time_token=ABCDEFG
모든 요청을 전달하고 $_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
파일의 내용 유형을 지정하는 MIME 헤더 형식을토큰은 어떻게 구현합니까? 거기 PHP는 특정 기능이 있습니까? – James
@James 임의의 ID를 생성하여 데이터베이스에 저장하는 것은 어렵지 않습니다 (필요한 경우 'uniqid'사용). 그러면 해당 ID를 사용자에게 보내 링크로 사용하십시오. 데이터베이스는'id | 토큰 | ip | 유효한'또는'id | 토큰 | ip | valid_until'을 사용합니다. IP는 선택 사항이지만 한 사용자가 동일한 파일을 수십억 번 다운로드하면 볼 수 있으므로 좋을 수도 있습니다. – h2ooooooo
대단히 감사합니다, 많이 hahaha 사랑 :) – James
쓰기 액세스를 사용하지 않는 한 원본 파일을 사용하는 것이 안전하지 않은 경우를 상상할 수 없습니까? – bwoebi
@bwoebi OP가 언급하는 것은 음악/사운드를 제공하는 서비스를 만드는 시나리오에서 유용 할 수 있지만 URL에 MP3를 복사하여 복사 한 다음 MP3를 제공하도록 할 수는 없습니다 또는 MP3 파일에 대한 링크를 공유). – h2ooooooo
@ h2ooooooo mod_rewrite를 디스크의 다른 데이터에 액세스 할 수있는 중앙 PHP 파일에 추가 하시겠습니까? – bwoebi