2013-07-18 43 views
0

後,我在如何讓下載file.zip的payment.If後困惑我重定向到其中的文件被放置在服務器下載頁面,他們可以輕鬆地再次下載該文件或者他們可以通過這鏈接到任何人。允許立即下載支付

任何建議,請!

+1

你不能物理文件給URL。你應該給你的服務鏈接,以檢查用戶是否可以下載文件。但還有更多。事實上,這是一個相當大的話題。 – Leri

回答

1

不要使用直接鏈接到文件 - 使用該服務的文件了作爲一個下載的PHP文件,但只有當某個會話變量被發現

1
(在確認支付過程的創建)

就像@SmokeyPHP提到的,只是輸出的文件通過PHP,而不是直接鏈接到它。

<?php 
$file = 'monkey.gif'; 

if (file_exists($file)) { 
header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename='.basename($file)); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file)); 
ob_clean(); 
flush(); 
readfile($file); 
exit; 
} 
?> 

http://php.net/manual/en/function.readfile.php

這種方式,你可以選擇誰下載什麼的完全控制。當然,根據文件大小,您可能希望將文件分成更小的塊。您不希望每5秒在您的服務器內存中緩衝40 MB文件。有了更大的文件,你可以使用這樣的事情:

<?php 
$file = fopen("file.dat", "r"); 
while (!feof($file)) { 
    echo fgets($file); 
} 
fclose($file); 

?> 
+0

oo..yes,我正在考慮下載文件的一些代幣... thnxxxxxx – user2556852

+0

代幣很容易。你需要跟蹤你的用戶會話。有一個變量「狀態」或什麼,看看下載是否已經開始或用戶是否被允許下載。這是基本的PHP。 – ZorleQ

1
  1. 放的.zip文件 Web服務器;
  2. 保護的.zip URL一些規則[如:正在登錄併購買資源];
  3. 關聯的.zip URL與讀取實際的二進制文件,並[在這裏大量的實例]轉發到用戶的操作。