이것은 PHP 스크립트를 사용하여 서버에서 파일을 다운로드하는 것에 관한 질문입니다. 사용자가 다운로드 링크를 클릭하면 download.php
파일로 처리되고 header
을 사용하여 다운로드가 시작됩니다.시간에 하나씩 PHP 스크립트를 사용하여 파일 다운로드
파일을 다운로드 한 후 download.php
파일에 하나의 기능이 있습니다.이 파일은 다운로드 한 파일에 대한 mysql 데이터베이스를 업데이트하고 사용자 계정에서 돈을 공제합니다. 모든 것이 잘 작동합니다.
이제 PC에 다운로드 관리자가 설치되어있는 경우 문제가 발생합니다. 때때로 다운로드는 브라우저와 다운로드 관리자에서 모두 시작되었습니다. 그래서 결국 데이터베이스에 두 가지 다운로드 항목이 있고 사용자 계정에서 돈이 두 번 공제됩니다.
질문 : 한 번에 하나의 다운로드 만 시작할 수 있습니까? 아니면이 일을하는 다른 방법?
다운로드 링크 나는 사용자에게 제공합니다.
<a href='download.php?id=1'>Download Test Video</a>
파일을 다운로드 할 때 사용하는 스크립트. (download.php) 나는 논리 변경하는 것이 좋습니다
$file = "c:/test.avi"; // $file = $_GET['id'];
$title = "Test Video";
header("Pragma: public");
header('Content-disposition: attachment; filename='.$title);
header("Content-type: ".mime_content_type($file));
header("Content-Length: " . filesize($file) ."; ");
header('Content-Transfer-Encoding: binary');
ob_clean();
flush();
$chunksize = 1 * (1024 * 1024); // how many bytes per chunk
if (filesize($file) > $chunksize) {
$handle = fopen($file, 'rb');
$buffer = '';
while (!feof($handle)) {
$buffer = fread($handle, $chunksize);
echo $buffer;
ob_flush();
flush();
}
fclose($handle);
} else {
readfile($file);
}
record_download('user id', 'file id');
이 편리하게 얻을 수 있습니다 ... http://stackoverflow.com/questions/14233850/how-to-prevent-file-hotlink-from-internet-download-manager-idm .. 아이디어는이다 이러한 다운로드 관리자 차단 ... 다른 아이디어가 있습니다. 그러나 이것은 그들 중 하나입니다 ... –
비디오 다운로드마다 요금을 청구합니까? 유료보기를 사용하고 웹 페이지에 삽입하는 것이 좋습니다. 전체 비디오에 대해 요금을 청구하는 경우 고객이 비디오를 구매 한 다음 원하는만큼 여러 번 다운로드하십시오 (또는 제한을 설정하십시오) –
사용자를 위해이 설정을 사용하는 방법에 대한 확신이 너무 많지 않습니다. 그러나 나는 최근에 비슷한 것을 완성했다. 그들이이 파일을 다운로드하면 고유 한 URL이 표시됩니다 (다운로드/). 그들이 이것을 다시 처리하려고 시도하면 이전 토큰이 사용됩니다. 물론 이것은 활성 세션이있는 경우에만 작동합니다. –
Dave