如何使用php对用户隐藏下载文件路径


How to hide download file path from user using php?

当用户想从我的网站下载文件时,用户必须单击如下所示的链接

https://www.example.com/download.php?aaa=111&bbb=222

下载.php

<?PHP
session_start();
include("connect.php");
$aaa = mysql_real_escape_string($_GET[aaa]);
$bbb = mysql_real_escape_string($_GET[bbb]);
if(($aaa = '111')&($bbb = '222'))  // this line is example for ask stackoverflow //
{
    $filePath_try_to_download = 'attachments_files/test.pdf';
    if(file_exists($filePath_try_to_download)) 
    {
        $fileSize = filesize($filePath_try_to_download);   
        $fileName = "test.pdf";     
        header("Cache-Control: private");
        header("Content-Type: application/stream");
        header("Content-Length: ".$fileSize);
        header("Content-Disposition: attachment; filename=".$fileName);
        // Output file.
        readfile ($filePath_try_to_download);                   
        exit();
    }
}
?>

我想知道用户何时从此链接下载文件https://www.example.com/download.php?aaa=111&bbb=222用户可以在服务器上获取我的文件路径(attachments_files/test.pdf)。如果用户可以获取我的文件路径,我该如何隐藏它?( file in this dir is very importance

由于我从手机上发布评论,他们无法真正解释太多,所以这里是你的答案。

我想知道用户何时从此链接下载文件 https://www.example.com/download.php?aaa=111&bbb=222 用户可以在服务器上获取我的文件路径(attachments_files/test.pdf)。

不可以,用户无法看到您通过 readfile() 读取的文件路径。他们根本无法找到该文件的位置。

如果您想消除人们猜测文件路径的任何机会,只需将这些文件放在您的 Web 根文件夹之外,然后从那里readfile()它们。

$filePath_try_to_download = 'attachments_files/test.pdf';

该路径仅对您的PHP代码所知,该代码对用户不可见,因此他们不知道您从哪里读取他们正在下载的文件,只需消除猜测的机会:)

显然,您必须保护对此URL的访问https://www.example.com/download.php?aaa=111&bbb=222否则有什么意义!

No.用户无法获取文件路径。他只得到PHP脚本输出的内容。

您可以执行此操作,用户只能获得"Hello"字符串。因此,PHP脚本的角色决定了用户可以获取哪些内容。

<?php
   echo "Hello";
?>