И так. Есть картинка сайт/papka/pic/1.jpg
заходим и видим что она там есть.
Но картинку эту выводит файл img.php
/papka/img.php?name=1.jpg
и там маленький белый квадратик.
Добавлено 25.02.17 в 14:41:55:
<?php
$level = 0;
$folder_level = '';
while (!file_exists($folder_level . 'favicon.ico') && $level < 5) {
$folder_level .= '../';
++$level;
}
unset($level);
define('F', $folder_level);
if (isset($_GET['name'])) {$name = $_GET['name'];}else{$name = "";}
if (isset($_GET['prev'])) {$prev = $_GET['prev'];}else{$prev = 240;}
if (isset($_GET['dir'])) {$dir = $_GET['dir'];}else{$dir = 'group/pic/';}
if (preg_match('|^[a-z0-9_-/]+$|i', $dir) && preg_match('|^[a-z0-9_.-]+$|i', $name)) {
if (file_exists(F . $dir . '/' . $name)) {
$getim = getimagesize(F . $dir . '/' . $name);
if ($getim[2] == 1 || $getim[2] == 2 || $getim[2] == 3) {
$width = $getim[0];
$height = $getim[1];
if ($width > $prev || $height > $prev) {
$x_ratio = $prev / $width;
$y_ratio = $prev / $height;
if (($x_ratio * $height) < $prev) {
$tn_height = ceil($x_ratio * $height);
$tn_width = $prev;
} else {
$tn_width = ceil($y_ratio * $width);
$tn_height = $prev;
}
// -------------------------------//
if ($getim[2] == 2) {
$img = imagecreatefromjpeg(F . $dir . '/' . $name);
$dst = imagecreatetruecolor($tn_width, $tn_height);
imagecopyresampled($dst, $img, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
header('content-type: image/jpeg');
header('Content-Disposition: filename="' . $name . '"');
imagejpeg ($dst, null, 75);
imagedestroy($img);
imagedestroy($dst);
}
// -------------------------------//
if ($getim[2] == 1) {
$img = imagecreatefromgif(F . $dir . '/' . $name);
$dst = imagecreatetruecolor($tn_width, $tn_height);
$colorTransparent = imagecolortransparent($img);
imagepalettecopy($img, $dst);
imagefill($dst, 0, 0, $colorTransparent);
imagecolortransparent($dst, $colorTransparent);
imagetruecolortopalette($dst, true, 256);
imagecopyresampled($dst, $img, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
header('content-type: image/gif');
header('Content-Disposition: filename="' . $name . '"');
imagegif ($dst);
imagedestroy($img);
imagedestroy($dst);
}
// -------------------------------//
if ($getim[2] == 3) {
$img = imagecreatefrompng(F . $dir . '/' . $name);
$dst = imagecreatetruecolor($tn_width, $tn_height);
$colorTransparent = imagecolortransparent($img);
imagepalettecopy($img, $dst);
imagefill($dst, 0, 0, $colorTransparent);
imagecolortransparent($dst, $colorTransparent);
imagetruecolortopalette($dst, true, 256);
imagecopyresampled($dst, $img, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
header('content-type: image/png');
header('Content-Disposition: filename="' . $name . '"');
imagepng ($dst);
imagedestroy($img);
imagedestroy($dst);
}
} else {
$filename = file_get_contents(F . $dir . '/' . $name);
header('Content-type: ' . $getim['mime']);
header('Content-Disposition: filename="' . $name . '"');
header('Content-Length: ' . strlen($filename));
echo $filename;
}
}
}
}
exit;
?>
Netc, денвер
Добавлено 25.02.17 в 15:15:20:
Шапку отредачил,не правильно записанной было
Тогда 25-ую строку смени вот на этот код
[code]<?php
if (preg_match('#^[a-z0-9-_/]+$#i', $dir) && preg_match('#^[a-z0-9_.-]+$#i', $name)) {
?>[/code]
RiDer™, я у себя на опен сервер проверил, всё работает, картинка выводится корректно.
RiDer™, в путях, либо ты не верно заменил строку. Скинь файл вывода изображений в ЛС.
Тему перенёс из подраздела Программирование в подраздел Бесполезные темы!