如何隐藏实际的下载文件夹位置 - php

我想隐藏下载文件夹的位置,以便用户下载文件时看不到该位置。我认为可以使用.htaccess文件完成此操作,但是我该怎么做?另外,如何用PHP完成呢?

参考方案

这是我在PHP中执行的操作:

<?php
$fakeFileName= "fakeFileName.zip";
$realFileName = "realFileName.zip";

$file = "downloadFolder/".$realFileName;
$fp = fopen($file, 'rb');

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=$fakeFileName");
header("Content-Length: " . filesize($file));
fpassthru($fp);
?>

此外,如果您不希望任何人访问文件位置,请将名为.htaccess的文件放入仅包含内容的下载文件夹中:

deny from all

我稍微修改了代码。首先,当我说假文件名和真实文件名时,假文件名就是下载程序将下载文件的名称,其中真实文件名是服务器上下载文件夹中实际文件的名称。

另外,我检查以确保用户已登录并能够下载文件。如果他选择下载文件,则在新选项卡中调用一个PHP文件(上面的下载代码),然后在文件末尾显示以下行:

exit;

因此,当他单击下载链接时,空白页会迅速在新选项卡中弹出,然后迅速退出并开始下载。

编辑:下载链接看起来像这样:

<a href="simpleDown.php?id=<?php echo $_GET['id']; ?>" target="_blank">Download!</a>

其中id是数据库中下载的id,在上面的下载脚本中,我找到带有该id的条目,然后获取其真实文件名和伪文件名。您可以在没有数据库的情况下执行此操作。

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

php:是否有充分的理由引用所有数组键/索引? - php

我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…

标头和包含项之间有什么区别,应在何处使用 - php

我对两个词感到困惑header ("Location:homepage_php");include("homepage.php");我猜想标题是在检查密码过程后使用的,关于include,您可以在任何地方使用它。但是我不确定它们之间的实际区别是什么以及应该使用这两个中的哪个位置。 参考方案 标头将用户转发到新页面,因此…

内置函数的PHP源代码 - php

PHP是用C编写的吗?在哪里可以找到PHP源代码,而无需下载所有源代码? 参考方案 PHP函数是用C编写的-您可以在lxr.php.net中找到可浏览的源代码。例如:http://lxr.php.net/opengrok/xref/PHP_5_3/ext/standard/array.c#1242PS:通常,只需在搜索中键入函数名称即可找到函数定义。使用诸如…

当文本等于单选按钮的值时,选择单选按钮 - php

当下拉菜单中的文本等于值时,是否可以选择2个名称相同但值不同的单选按钮中的1个?https://paste.ee/p/2iCjA第97行我用if-else尝试过:if($('input[name="anrede"]').val() == 'Herr') { $("#Herr").…