Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Подмена имени файла изображения "На лету"
Форумы портала PHP.SU » » Графика в PHP » Подмена имени файла изображения "На лету"

Страниц (1): [1]
 

1. Axel B - 16 Января, 2012 - 06:49:13 - перейти к сообщению
Всем доброго времени!

Есть такая необходимость.
Допустим у нас есть изображение в папке /images/photo/aaa.jpg
В php такое изображение и путь к нему определяются скриптом в переменной, допустим $image.

Необходимо чтобы при выводе на экран изображение выглядело рендомно, цель, чтобы гость не смог узнать где находится оригинальное изображение и главное, имя файла, тоесть
вместо <img src="../images/photo/aaa.jpg" alt="*" />
должно быть чтото вроде <img src="../somedir/defaultname.jpg" alt="*" />, при этом изображение должно отображаться.
Все исходные изображения лежат в одной, заведомо известной папке, их может быть до чертиков, но выводится не более одного на страницу.

Как сделать?

Через PHP вижу только возможностью ресайза, но это требует сохранения миниатюры на сервере, что не удобно т.к. захламлять сервер одноразовыми изображениями не хочется, удалять после показа немного проблематично и "не изящно". Но возможно есть другой путь?

Как второй более реальный вариант вижу через директиву в .htaccess, а точнее RewriteRule, чтобы все изображения лежащие в папке /images/photo/$1 показывались как /somedir/defaultname.jpg
И естественно, если пользователь захочет перейти по somedir/defaultname.jpg, то получит 404 или дефолтное фото.

С htaccess только впервые столкнулся, курение примеров не помогло, возможно не с той стороны подошел к вопросу...

В общем был бы благодарен за дельный совет и пример который бы сделал необходимое.

Заранее спасибо

P.S. Вариант с JS исключен
2. LIME - 16 Января, 2012 - 07:52:53 - перейти к сообщению
в качестве src рисунка указать обработчик php

в котором заполняем массив всеми именами файлов в папке рисунков
рандомно выбираем номер файла в массиве
показываем его
PHP:
скопировать код в буфер обмена
  1. header("Content-type: image/png");
  2. header("Content-length: ".filesize('файл'));
  3. echo file_get_contents('файл');

(Добавление)
mime тип указан png для примера
сменить на настоящий
3. Axel B - 16 Января, 2012 - 09:10:59 - перейти к сообщению
LIME, спасибо за ответ!

Вставлять php в HTML нельзя, нужно все в одном файле произвести.
Изображение берется не совсем рендомно, а из списка в БД.
То есть как и писал, в $image указан путь, его и нужно скрыть, остальные изображения в папке игнорируются.

нужно получить другую переменную которая бы пусть изменяла изображение, но не требовала сохранения. Примерно так как генерятся изображения каптч (Они ведь только в памяти висят, верно?).

Поясню почему:
Есть форум, где php и html разделены и php в html вставлять нельзя, а только заранее определенные переменные.
4. LIME - 16 Января, 2012 - 09:17:44 - перейти к сообщению
пойду утоплюсь
----------------
ладно последняя попытка
какую картинку выдать обработчиком php ты сам решай в его реализации
из бд из папки хоть из морозилки файл бери
факт в том что картинку обработчик выдает как-будто он сам и есть картинка
(Добавление)
ты же знаешь что картинки загружаются отдельными запросами?
5. Axel B - 16 Января, 2012 - 12:51:31 - перейти к сообщению
LIME, топиться не нужно... сейчас зима, холодно Радость

Дело в том, что какую именно картинку показывать определяет первый php файл.
Назовем его index.php
Вызов картинки с помощью файла-обработчика image.php требует передать ему какую именно картинку выводить.
Как передать ему переменную из index.php ?
Вариант image.php?im=1.jpg (Или любое другое обозначение), не подходит т.к. в браузере это сразу будет видно и картинка будет идентифицирована, против чего и борюсь.
6. LIME - 16 Января, 2012 - 13:04:43 - перейти к сообщению
Axel B пишет:
Дело в том, что какую именно картинку показывать определяет первый php файл.
так перенеси эту определяющую часть в обработчик еклмн да чтож такоето
7. Axel B - 16 Января, 2012 - 15:25:01 - перейти к сообщению
LIME пишет:
так перенеси эту определяющую часть в обработчик

Там переносить пол функций форума
Нереально.

Неужели никак средствами php нельзя скрыть адрес изображения?
Видимо придется загаживать хост одноразовыми миниатюрами Огорчение
8. LIME - 16 Января, 2012 - 15:44:39 - перейти к сообщению
Axel B тогда можно при выборе изображения записать его адрес в сессию и обработчиком отдавать картинку которая в сессии и сразу удалять ее(сессионную переменную)

 

Powered by ExBB FM 1.0 RC1