[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как загрузить изображение?
free_style
Всем, привет!

Как загрузить изображение, если оно находиться выше папки docs?
Стандартный способ загрузки изображения не срабатывает.

<?php

echo"<img src='../img.jpg'>\n";

?>



Спустя 3 часа, 11 минут, 57 секунд (17.01.2010 - 19:50) vagrand написал(а):
а почему имадж у тебя хранитя выше корневого каталога сайта?

Спустя 2 часа, 26 минут, 12 секунд (17.01.2010 - 22:16) grigoriyi написал(а):
попробуйте путь из корня


_______________
бесплатные анонимные прокси

Спустя 2 часа, 4 минуты, 16 секунд (18.01.2010 - 00:20) ApuktaChehov написал(а):
Есть одна штука, я не помню какая, в php.ini. Она разрешает или запрещает работу php вне каталога сервера.

Спустя 1 час, 55 минут, 21 секунда (18.01.2010 - 02:16) waldicom написал(а):
последние два ответа поражают глубиной мысли...

Спустя 4 часа, 14 минут, 46 секунд (18.01.2010 - 06:31) anonymouse написал(а):
echo"<img src='../img.jpg'>\n";

Убери \n

Спустя 2 часа, 35 минут, 7 секунд (18.01.2010 - 09:06) free_style написал(а):
Народ, добрый день!

Просьба понять меня правильно. Хранение изображений, вне корня сайта обоснована. Все дело в том, что на том сайте, поддержкой которого я занимаюсь расположена ДОСКА ОБЪЯВЛЕНИЙ. И любой желающий может за смску выложить свою картинку. Есть несколько способов защиты:

1. Проверка, файла, что это действительно картинка.
2. Проверка расширения файла на то, что не php - код.
3. Даже если, проверку файл прошел, нужно изменить размер файла, это позволит стереть из файла метаданные.
4. Переименовать файл.
5. Засунуть его выше корня сайта.

Так что просьба, напишите как потом это изображение вновь увидеть...

Спустя 2 минуты, 7 секунд (18.01.2010 - 09:08) anonymouse написал(а):
после rename() слабо засунуть новое имя файла в БД?
Ты же где-то хранишь имена файлов ? Те что относятся конкретно к Узеру !!!

Спустя 22 минуты, 49 секунд (18.01.2010 - 09:31) free_style написал(а):
anonymouse, разумеется я храню имена файла (точнее, даже путь к файлу) в БД. Но разве не будет лучшей защитой не только переименовать файл, но и засунуть его куда подальше? biggrin.gif

Спустя 14 минут, 59 секунд (18.01.2010 - 09:46) anonymouse написал(а):
free_style
1. и куда же дальше чем не БД ? Конечно если только не сохранить имя файла в каком-то файле с рандом именем засунуть его в бд под пользавателя и каждому JPG файлу создавать личный такой файл.


БРЕД !!!

Ты ищешь геморрой ??? Или свечи от геморроя ?

Спустя 43 минуты, 8 секунд (18.01.2010 - 10:29) free_style написал(а):
Скорее всего я ищу свечи от геморроя!

Мне нужно защитить сайт от загружаемого изображения. Вот как это надежно и просто сделать? Думаю стоит начать с этого.

Спустя 1 час, 18 минут, 34 секунды (18.01.2010 - 11:47) anonymouse написал(а):
я делаю очень просто.
1. Конечно проверка mimy-type
2. rename() - когда делаю ренэйм обязательно задаю к имени файла разрешение в конце.
Тобишь не важно сколько там точек будет - при вызове ренаме и я ставлю !image=rename(...','$image.'.JPG');
3. очистка от мета данных.
4. Самое главное - я пропю файл - если это JPG то он скропица (Cropping), если нет еррор и делаем просто .unlink

Спустя 10 минут, 36 секунд (18.01.2010 - 11:58) free_style написал(а):
anonymouse, можешь пояснить 4 пункт? Что значит Cropping? Это обрезание изображения? Можешь кинуть ссылку на эту тему? А то мне не совсем легко найти то, не знамо что...

Спустя 20 минут, 3 секунды (18.01.2010 - 12:18) anonymouse написал(а):
Я тебе скину пример кода что сам использую.

Принцип таков - создаються в общем 2 файла.
один мини файл примерно 180/200 - для погрузки быстрой.
И второй уже на 600 по высоте...
Тобьши файл из 3 мб становиться в 300 200 кб.
И грузиться конечно же он на много быстрей )

Стараемся убивать 2 зайца сразу.


if (! empty ( $filename )) {
$imagename = $_FILES['filename']['name'];
$source = $_FILES['filename']['tmp_name'];
$target = "photos/".$filename;
move_uploaded_file($source, $target);
$new_name=rand(1,9999999).".JPG";
rename($target,"photos/".$new_name);
$imagepath = $new_name;
$save = "photos/" . $imagepath; //This is the new file you saving
$file = "photos/" . $imagepath; //This is the original file
list($width, $height) = getimagesize($file) ;

$modheight = 600;

$diff = $height / $modheight;

$modwidth = $width / $diff;
$tn = imagecreatetruecolor($modwidth, $modheight) ;
$image = imagecreatefromjpeg($file) ;
imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ;

imagejpeg($tn, $save, 100);

$save = "photos/new_" . $imagepath; //This is the new file you saving - mini file
$file = "photos/" . $imagepath; //This is the original file - original

list($width, $height) = getimagesize($file);

if ($width > $height) {
$modheight = 180;
$diff = $height / $modheight;
$modwidth = $width / $diff;
}
else {
$modwidth = 200;
$diff = $width / $modwidth;
$modheight = $height / $diff;
}

$tn = imagecreatetruecolor($modwidth, $modheight) ;
$image = imagecreatefromjpeg($file) ;
imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ;

imagejpeg($tn, $save, 100) ;

}

Спустя 5 минут, 2 секунды (18.01.2010 - 12:23) free_style написал(а):
Спасибо за помощь!

Спустя 15 минут, 11 секунд (18.01.2010 - 12:38) VolCh написал(а):
Цитата
5. Засунуть его выше корня сайта.

Так что просьба, напишите как потом это изображение вновь увидеть...


Пишешь скрипт типа image.php, который при вызове image.php?id=### вытягивает из базы имя файла в ФС, его mime-type и т. п.. затем выдает в хидере майм и т. д. и собственно само тело файла. При желании можно сделать реврайт на image.php?id=### c /image/###

Спустя 2 часа, 56 минут, 58 секунд (18.01.2010 - 15:35) free_style написал(а):
anonymouse, извини за беспокойство.

А как ты чистить от метаданных, изменением размера картинки?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.