允许脚本读取文件,但阻止用户直接查看文件

比方说,我有一个纯文本文件example.txt ,我有一个PHP脚本在我的networking服务器readfile.php

我想要做的是防止用户inputhttp://www.example.com/example.txt并直接查看文本文件,但我仍然希望用户能够加载http://www.example.com/readfile.php ,它从文件http://www.example.com/readfile.php中读取数据并用它做一些事情(可能会显示文件的内容)。

另外,如果能做到这一点,最好的办法是什么?

Solutions Collecting From Web of "允许脚本读取文件,但阻止用户直接查看文件"

是的,这很容易做到。

阻止用户访问example.txt主要有两种方法。 首先是把它放在你的web文件夹(通常称为wwwpublic_html )之外的文件夹中,第二是用你的example.txt脚本在文件夹中放置一个.htaccess文件,它完全阻止了对文件的访问。 .htaccess看起来像

 <files "example.txt"> deny from all </files> 

但是,如果您想要阻止文件夹中的所有.txt文件,则可以将example.txt更改为*.txt之类的内容。

然后你可以在你的readfile.php使用file_get_contents()来获取文本文件的内容,或者如果你只是想输出文件,你可以使用readfile

只需将不想公开访问的文件存储在webroot之外即可

 /home example.txt /www readfile.php 

如果/home/www/是您的公共webroot文件夹,则其上方的任何文件都无法通过Web服务器访问。 尽管readfile.php仍然可以在../example.txt访问文件。

如果您需要将文件存储在webroot中,请将这些文件放在一个文件夹中,并拒绝对该文件夹的访问。 如果您使用的是Apache,请在该文件夹中创建一个.htaccess文件,然后输入deny from all

我做了一些类似的文件,其中包含极其敏感的信息,我只希望验证的用户能够通过HTTPS连接检索文件。

我做的是这样的:

我把这些文件放在一个不在web服务器(Apache,对我来说)可以看到的范围之外的目录路径中。 因此,没有可能导致文件被Web服务器直接提供的URL。 然后,我创建了一个脚本,允许用户登录,点击他们想要的文件,然后PHP脚本读取文件,放入适当的标题,然后将文件传输到用户的计算机。

当然,向用户显示文件列表的脚本以及将文件传输给用户的脚本必须至少具有读取存储路径中的文件的权限。

祝你好运!!

你可以把文件“example.txt”放在公共文件夹的外面,并从readfile.php中读取,如$content = file_get_contents("../example.txt");

你可以像这样调用一个文件,而且人们看不到文件名:

 <?php $file = 'example.txt'; 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, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; } ?> 

(来源:php.net)

这对你有用吗?