Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 强制下载文件_Php_File_Download - Fatal编程技术网

Php 强制下载文件

Php 强制下载文件,php,file,download,Php,File,Download,我正在开发一个web服务。使用此服务,用户将上载其.php文件,并且该服务将从php文件中删除UTF8 BOM字符。然后,会有这样一个链接: 但当我单击此链接时,浏览器将浏览到此文件。我不想浏览,我想下载。因此,当用户单击此链接时,下载将开始 有什么想法吗 (顺便说一句,我不想修改uploadedfile.php文件,我也读了5个关于这个的问题,但我仍然有问题。)问题是你允许人们在你的服务器上上传php文件,然后给他们一个执行该php文件的链接。web服务器会像处理任何其他PHP文件一样自动处

我正在开发一个web服务。使用此服务,用户将上载其.php文件,并且该服务将从php文件中删除UTF8 BOM字符。然后,会有这样一个链接:

但当我单击此链接时,浏览器将浏览到此文件。我不想浏览,我想下载。因此,当用户单击此链接时,下载将开始

有什么想法吗


(顺便说一句,我不想修改uploadedfile.php文件,我也读了5个关于这个的问题,但我仍然有问题。)

问题是你允许人们在你的服务器上上传php文件,然后给他们一个执行该php文件的链接。web服务器会像处理任何其他PHP文件一样自动处理这些上传的PHP文件,即执行它,这会给您打开一个巨大的安全漏洞

无论您的web服务有什么用途,我都建议在上传文件时重命名服务器上的文件(最好是“随机”的,不带扩展名),然后在请求时让一个PHP脚本使用适当的头集将其反馈出去

此类脚本的URL如下所示:

http://www.example.com/get_uploaded_file.php?id=jgh3h8gjdj2389

它会将
id
中的值与服务器上的文件链接起来,如果您将原始文件名保存在某个地方(平面文件,DB),只要设置正确的HTTP头,您就可以使用其原始名称提供该文件。

问题在于您允许人们在服务器上上载PHP文件,然后给他们一个执行该PHP文件的链接。web服务器会像处理任何其他PHP文件一样自动处理这些上传的PHP文件,即执行它,这会给您打开一个巨大的安全漏洞

无论您的web服务有什么用途,我都建议在上传文件时重命名服务器上的文件(最好是“随机”的,不带扩展名),然后在请求时让一个PHP脚本使用适当的头集将其反馈出去

此类脚本的URL如下所示:

http://www.example.com/get_uploaded_file.php?id=jgh3h8gjdj2389

它会将
id
中的值与服务器上的文件相链接,如果您已将原始文件名(平面文件,DB)保存在某个位置,则只要设置正确的HTTP头,就可以使用其原始名称提供该文件名。

您需要提供此HTTP头:

Content-Disposition: attachment; filename=example.txt

通常,您可以通过适当配置web服务器,一次为整个目录指定此选项。如果您提到正在使用的web服务器,可能会有人建议如何执行此操作。

您需要提供以下HTTP标头:

Content-Disposition: attachment; filename=example.txt

通常,您可以通过适当配置web服务器,一次为整个目录指定此选项。如果您提到您使用的是哪台web服务器,可能会有人建议如何执行此操作。

直接链接到PHP文件可能最终会执行它。一种方法是(就像上面有人建议的那样)重命名它。或者,您可以使用downloader.php,它的功能如下:


直接链接到PHP文件可能最终会执行它。一种方法是(就像上面有人建议的那样)重命名它。或者,您可以使用downloader.php,它的功能如下:


您需要修改
uploadedfile.php
。没有办法,但用户将下载
uploadedfile.php
?在其当前形式下,您将执行上载的文件,这是一个不允许的。您需要一个传输脚本来发送正确的头并通过文件的源代码。您需要修改
uploadedfile.php
。没有办法,但用户将下载
uploadedfile.php
?在当前的形式下,您将执行上载的文件,这是一个禁忌。您需要一个传输脚本来发送正确的头并传递文件的源代码