我正在阅读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']
?
答案 0 :(得分:3)
如果有人将http://example.com/file.txt
或path/file.txt
或../../../../etc/hosts
传递给$_GET['file']
,则基本名称将不匹配。
basename($file) == $file
才会为真。
答案 1 :(得分:0)
在第7行代码中,为什么basename($ _ GET [' file'])不等于$ _GET [' file']?
因为$_GET['file']
包含路径分隔符。