Fork me on GitHub

Как показывать изображения на сайте

Рассмотрим ситуацию, когда система Eonza используется в качестве панели администрирования и управления сайтом. Администратор, например, может добавлять различные фотографии в базу данных, но как их можно показывать на самом сайте? Конечно, можно самостоятельно реализовать данную функциональность, но имеется пример, который как минимум можно использовать в качестве начального решения. Мы по шагам объясним все действия, которые необходимо сделать для того, чтобы нужная картинка показывалась в браузере любому пользователю. Для примера, возьмем онлайн демоверсию системы Eonza.

Шаг 1

Пусть все обращения к изображениям будут осуществляться по адресу вида http://demo.eonza.org/file/ID картинки. Для этого необходимо распаковать eonza/tools/file.zip в корневую директорию сайта и получить директорию file с двумя файлами index.php и .htaccess. Рассмотрим следующие две строчки в файле index.php

require_once $_SERVER['DOCUMENT_ROOT'].'/admin/conf.inc.php';
require_once $_SERVER['DOCUMENT_ROOT']."/eonza/app.inc.php";

Здесь предполагается, что система Eonza установлена в директорию eonza, а доступ к системе осуществляется по адресу www.myeonzasite.com/admin/, там должен хранится файл с настройками conf.inc.php. Если у вас используются другие имена директорий, то вы должны указать их вместо существующих. В случае с нашим сайтом demo.eonza.org, система установлена в корневую директорию и эти две строчки будут выглядеть так.

require_once $_SERVER['DOCUMENT_ROOT'].'/conf.inc.php';
require_once $_SERVER['DOCUMENT_ROOT']."/app.inc.php";

Шаг 2

Информационное хранилище Eonza спроектировано таким образом, чтобы избегать несанкционированного доступа к данным. Это же относится и ко всем дополнительным скриптам. Поэтому вам нужно явно указать все таблицы, изображения которых могут просматривать пользователи. Для этого узнайте идентификатор таблицы. Он показывается в адресной строке при просмотре таблицы. Например, адрес http://demo.eonza.org/#/table?id=7 сообщает, что идентификатор текущей таблицы равен 7. После этого добавьте в файл conf.inc.php массив $SHARE_FILES и перечислите там все таблицы, к изображениям которых хотите открыть доступ. На этом шаге все необходимые действия по настройке закончены.

$SHARE_FILES = array( 7 );

Шаг 3

Все данные о файлах и фотографиях хранятся в таблице enz_files, там у каждого файла указаны идентификатор таблицы, идентификатор поля и идентификатор самой записи. Так как система не ограничивает количество прикрепленных файлов в одном поле, то может быть выдано несколько записей на один запрос. Например, запрос на получения трех изображения записи вполне может иметь подобный вид

$images = $db->getall("select id from enz_files where idtable=7 && iditem=?s limit 0,3",  $iditem );

Что касается самого хранилища, то там код изображения или файла пишется в правом нижнем углу у каждого файла в режиме просмотра карточки.

Итак. мы знаем код изображения, которое мы хотим показать. В каком же формате нужно указывать адрес изображения?
Во-первых, расширение не является обязательным параметром, но для наглядности мы будем везде указывать jpg. Во-вторых, в качестве идентификатора картинки везде будет указано 123, но вы должны использовать свои значения.

http://www.myeonzasite.com/file/123.jpg
Если вы укажете адрес данного формата в адресной строке браузера, то вам предложено будет скачать данное изображение. Если адрес вида будет указан в HTML тэге IMG, то изображение будет просто показано на HTML странице.

http://www.myeonzasite.com/file/i123.jpg
http://www.myeonzasite.com/file/any-text-string-123.jpg
В обоих случаях изображение будет просто отображаться в браузере.

http://www.myeonzasite.com/file/t123.jpg
Будет отображаться уменьшенная копия изображения (превью), если она имеется.

Например

http://demo.eonza.org/file/my-best-foto-12.jpg
http://demo.eonza.org/file/i12
http://demo.eonza.org/file/t12.jpg
http://demo.eonza.org/file/12.photo