下載當我在下面的文件路徑鍵入文件下載通過地址欄PHP
http://localhost/BookStore/download.php?file=books/feedback.pdf
我不希望這種情況發生,用戶應該只能夠購買發生之後要下載的文件,如果他們使用這種方法,那麼他們就會得到這個文件。
下面是代碼爲我的download.php文件
<?php
function downloadFile($file,$speed=1024){
if (file_exists($file)) {
if(is_dir($file)){return 'isdir';}
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: '.sprintf("%u", filesize($file)));
ob_clean();
$handle = fopen($file, "rb");
$chunksize=(sprintf("%u", filesize($file))/$speed);
set_time_limit(0);
while (!feof($handle)) {
echo fgets($handle, $chunksize);
flush();
}
fclose($handle);
die;
}else{return false;}
return;
}
if (isset($_GET['file'])) {
$file = $_GET['file'];
}
$result = downloadFile($file);
if ($result == FALSE) {
echo "Sorry, file does not exist.";
}
?>
有沒有可以用來解決這個問題的任何類型的驗證?
由於
爲什麼購買前有文件?或者它是他們正在購買的文件?如果他們購買了它,你應該添加一張支票。 – putvande
這是他們正在購買的文件,此下載鏈接僅在購買發生後纔會出現在他們的帳戶中,但是如果您輸入頂部的地址,它將繞過系統的整個購買方面。 – user3296793
您需要執行身份驗證和授權。您應該至少已經在其他頁面中實現了其中的一部分(否則您將無法運行購物籃)。 – Quentin