用PHP创建下载链接

时间:2016-06-26 18:42:03

标签: php

我正在阅读PHP解决方案并遇到了令我困惑的这些代码行,如果有人可以帮助我找出其含义,那将会很棒。

// define error page
$error = 'http://localhost/phpsols/error.php';
// define the path to the download folder
$filepath = 'C:/xampp/htdocs/phpsols/images/';

$getfile = NULL;

// block any attempt to explore the filesystem
if (isset($_GET['file']) && basename($_GET['file']) == $_GET['file']) {
    $getfile = $_GET['file'];
} else {
    header("Location: $error");
    exit;
}

在第7行代码中,为什么basename($_GET['file'])不等于$_GET['file']

2 个答案:

答案 0 :(得分:3)

如果有人将http://example.com/file.txtpath/file.txt../../../../etc/hosts传递给$_GET['file'],则基本名称将不匹配。

只有在没有路径(只是文件名)的值的情况下,

basename($file) == $file才会为真。

答案 1 :(得分:0)

  

在第7行代码中,为什么basename($ _ GET [' file'])不等于$ _GET [' file']?

因为$_GET['file']包含路径分隔符。