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

时间:2016-02-18 06:02:38

标签: php

当用户想从我的网站下载文件时,用户必须点击下面的链接

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

的download.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

2 个答案:

答案 0 :(得分:2)

由于我在手机上发表评论,他们无法解释得太多,所以这里是你的回答。

  

我想知道用户从此链接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代码所知,用户看不到它,因此他们不知道您从哪里读取他们正在下载的文件,只是消除了猜测机会:)

显然你必须保护对这个网址https://www.example.com/download.php?aaa=111&bbb=222的访问权限,否则有什么意义!

答案 1 :(得分:0)

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

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

<?php
   echo "Hello";
?>