2013-07-18 41 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与读取实际的二进制文件,并[在这里大量的实例]转发到用户的操作。