Как показывать изображения на сайте
Рассмотрим ситуацию, когда система 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