下载链接隐藏

时间:2009-10-03 16:16:10

标签: php hyperlink shop

我正在开设一个商店系统,我有以下链接http://cmstutorials.org/shop/downloads/2793156879(原始链接是cmstutorials.org / shop / downloads.php?download = 2793156879)

我要做的是让用户下载与id 2793156879匹配的项目,而不显示文件的实际链接。就像他们在themeforest.net上一样

我该怎么做?

5 个答案:

答案 0 :(得分:2)

此示例可以帮助您:

$len = filesize($filename);
header("Content-type: image/jpeg");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=\"$new_filename\"");
readfile($filename);

或另一个,对我来说看起来更简单:

<?php
header('Content-type: image/jpeg');
$f = file_get_contents('path/to/image.jpg');
print $f;
?>

PS当然,您content-type必须适合您的文件。

答案 1 :(得分:1)

必须在发送任何实际输出( echo )之前调用

标头(),否则会抛出此错误。

参见“示例2”:http://www.w3schools.com/php/func_http_header.asp

答案 2 :(得分:0)

wooohoooo

非常感谢,这个网站规则我总能得到正确答案:D

我将其粘贴在header.php上方,包括 ob_start();

就在标题函数 ob_ get_clean();

之前

可能对人们有用(注意:对于第二个函数,我在get之前添加了一个空格,以便正确显示,不要忘记在使用它时将其删除)

答案 3 :(得分:0)

如果你打算尝试扩展这项服务,我建议你去看看perlbal。其中一个巧妙的技巧是你的应用程序可以发送一个特殊的标题,告诉perlbal为另一个服务器提供静态文件。这样,您就不需要将PHP线程与向下推送到客户端。

答案 4 :(得分:0)

内容处理没问题,但另一种解决方案是使用PATH_INFO并以这种方式获取文件:

http://example.com/download.php/2793156879.zip

你的download.php就像

// handle path_info
$filename=$_SERVER['PATH_INFO']; // gets "/2793156879.zip" as $filename

// do smtg w/ $filename...
// ...

// download 
$len = filesize($filename);
header("Content-type: application/force-download");
header("Content-Length: $len");
readfile($filename);

注意:应用程序/强制下载不存在,它只是强制下载每个浏览器。 (有些MSIE似乎在应用程序/八位字节流方面遇到了麻烦)

这种方法的优点是可以与所有浏览器一起使用:即使是非常旧的浏览器,也不支持“Content-Disposition:”标题。

你必须从PATH_INFO字符串中自己使用substr()产品代码