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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Подмена имени файла изображения "На лету"

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Axel B
Отправлено: 16 Января, 2012 - 06:49:13
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Всем доброго времени!

Есть такая необходимость.
Допустим у нас есть изображение в папке /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 исключен
 
 Top
LIME
Отправлено: 16 Января, 2012 - 07:52:53
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




в качестве src рисунка указать обработчик php

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

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


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




LIME, спасибо за ответ!

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

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

Поясню почему:
Есть форум, где php и html разделены и php в html вставлять нельзя, а только заранее определенные переменные.
 
 Top
LIME
Отправлено: 16 Января, 2012 - 09:17:44
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




пойду утоплюсь
----------------
ладно последняя попытка
какую картинку выдать обработчиком php ты сам решай в его реализации
из бд из папки хоть из морозилки файл бери
факт в том что картинку обработчик выдает как-будто он сам и есть картинка
(Добавление)
ты же знаешь что картинки загружаются отдельными запросами?
 
 Top
Axel B
Отправлено: 16 Января, 2012 - 12:51:31
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




LIME, топиться не нужно... сейчас зима, холодно Радость

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


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Axel B пишет:
Дело в том, что какую именно картинку показывать определяет первый php файл.
так перенеси эту определяющую часть в обработчик еклмн да чтож такоето
 
 Top
Axel B
Отправлено: 16 Января, 2012 - 15:25:01
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




LIME пишет:
так перенеси эту определяющую часть в обработчик

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

Неужели никак средствами php нельзя скрыть адрес изображения?
Видимо придется загаживать хост одноразовыми миниатюрами Огорчение
 
 Top
LIME
Отправлено: 16 Января, 2012 - 15:44:39
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Axel B тогда можно при выборе изображения записать его адрес в сессию и обработчиком отдавать картинку которая в сессии и сразу удалять ее(сессионную переменную)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Графика в PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB