PHP получить изображение с сервера

Я пытаюсь отобразить изображение с сервера PHP.
Вот моя функция:

function get_file($path) {
$fileToGet = $GLOBALS['homedir'].$path;
//echo $fileToGet.PHP_EOL;
if (file_exists($fileToGet)) {
//echo 'file exists';
header('Content-Type: image/png');
header('Content-Length: '.filesize($fileToGet));
echo file_get_contents($file);
}
}

Я использую браузер или почтальона, и изображение недействительно.

Чего мне не хватает?

0

Решение

Я немного отредактировал вашу функцию:

function get_file( $path ){
$fileToGet = $GLOBALS['homedir'];
if( substr( $fileToGet, -1) != '/' ){
// add trailing slash if needed
$fileToGet .= '/';
}
$fileToGet .= $path;

if (file_exists($fileToGet)) {
header('Content-Type: image/png');
header('Content-Length: '.filesize($fileToGet));
echo file_get_contents($fileToGet);
}
}

Просто подсказка безопасности: если $path приходит от пользователя может быть проблема, потому что он сможет получить доступ к другому файлу.
Подумайте об этом коде:

get_file( $_GET['path'] );

тогда пользователь может вызвать этот URL

yoursite/yourpage.php?path=../../../mypreciousimage.png
1

Другие решения

Вы не выводите содержимое файла, который вы читаете:

file_get_contents($file);

Вам нужно будет повторить это:

echo file_get_contents($file);

Или же:

readfile($file);

Вы, вероятно, также хотите добавить exit; до конца этой функции, чтобы гарантировать, что никакой другой код не выполняется и никакие другие выходные данные не отправляются.

0

Пытаться

print file_get_contents($file);

Вместо

file_get_contents($file);
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector