get - 使用 PHP 下载文档根目录之外的文件

标签 get php

我正在尝试使用 readfile() 下载文件;在 PHP 中,但我遇到了麻烦,这是我的代码:

<?php
$getdir = $_GET['dir'];
$getdoctype = $_GET['doctype'];
$getfile = $_GET['filename'];
$dir = "/var/www/uploads/$getdir/$getdoctype/";

$type = mime_content_type( $dir . '/' . $getfile );
$contents = file_get_contents($dir . '/' . $getfile);

if (file_exists($getfile)) {
   header('Content-Type: ' . $type);
   header('Content-Disposition: attachment;filename=' . $getfile);
   readfile($getfile);
}
else{
   echo "File Not Found";
}
?>

我做错了什么?我想下载存储在 $getfile 变量中的文件。我想使用所有文件类型和所有文件大小,这就是我这样做的原因。

当我单击文件时,我不断收到的错误是:根据我的代码,“找不到文件”。但它确实存在。

另请记住,托管这些文件的网站已启用 SSL

最佳答案

您应该尝试替换此代码:

file_exists($getfile) => file_exists($dir . '/' . $getfile)

readfile($getfile); => readfile($dir . '/' . $getfile);

但是使用$_GET参数从文件系统加载文件是非常危险的,不要在公共(public)网站上使用此代码。

关于get - 使用 PHP 下载文档根目录之外的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21765742/

相关文章:

javascript - jquery修改url获取参数

c++ - 为什么 istream::get 将 failbit 和 eofbit 设置在一起?

php - 仅从数据库中获取时间戳日期

php - Codeception 接受测试以接受弹出窗口

javascript - codeigniter 获取 ajax post 文件

php - 使用 WHERE 子句加速 MySQL (MyISAM) 计数

php - 无法使用 GET 访问 PHP 站点

zend-framework - 采埃孚 : GET parameters duplication

javascript - 使用 Node.js 渲染页面时出现 css/js 文件引用错误

php - mysql_query() 期望参数为 mysqli/string