我正在测试一种在webroot之外存储上传内容的新方法,出于安全原因,我已经在SO上的几个问题中看到过。
我运行正常,包括我的TimThumb文件,但我注意到这会大大增加页面加载时间。我在大多数页面上都有许多用户上传的图像,当通过webroot外部的readfile()
获取图像时,加载时间是无法忍受的。
有什么我想念的吗?我想要安全,但我根本无法承受这么长的加载时间。
我的图像处理脚本如下所示:
$queryString = str_replace('.php&', '.php?', $_SERVER['QUERY_STRING']);
$src = preg_replace('#^src=#', '', $queryString);
$path = slash($_SERVER['DOCUMENT_ROOT'].'/../'.$src); // slash() removes duplicate slashes
if ( stristr($src, 'thumb.php') ) {
// output the thumb file
$query = explode('?', $path);
$urlVars = explode('&', $query[1]);
// storing TimThumb query vars as SESSION vars to pass them
foreach($urlVars as $var) {
$parts = explode('=', $var);
$_SESSION['Thumb']['Thumb-'.ucwords($parts[0])] = $parts[1];
}
$path = str_replace('?'.$query[1], '', $path);
echo include_php_file($path); // include_php_file just saves the buffered output from a file so you can use it as a var
return;
} else {
// output the image
header('Content-Type: image/jpeg');
echo readfile($path);
return;
}