Здесь впишите заголовок Вашей страницы..

Как показать изображение через скрипт?

Рассмотрим ситуацию, когда необходимо организовать отдачу изображений с сервера пользователю скажем «интеллектуально», об этом подробнее. Так сложилось, что привычным образом файлы изображений мы храним на сервере, в какой либо публичной директории, а на самих веб-страницах мы передаем изображения по прямым ссылкам. Т.е. мы берем ссылку на изображение, вбиваем её в браузер, получаем изображение по прямой ссылке.
Проблема в том, что для некоторых проектов не допустимо, к примеру, получения доступа к изображениям не авторизованным пользователям, либо нет возможности разграничить права доступа к файлу по ссылке. Так же не редки случаи, когда в зависимости от запроса необходимо выполнить какие-либо манипуляции с файлом или базой данных на сервере, либо как-то ещё, придерживаясь требуемых задач по проекту.
Допустим, если я авторизовался на сайте, у меня есть какая-либо ссылка, по открытию которой я получаю файл изображения — ссылка работает, я делаю выход из системы авторизации — то ссылка не работает соответственно.
Благодаря возможности использования скриптов в качестве обработчиков запроса мы можем гибко манипулировать данными, отдаваемые пользователю. Как известно протокол HTTP для своего должного функционирования обмена данными использует заголовки запросов и ответов. В этих заголовках так же наряду с другими параметрами передаются данные о типе данных передаваемые браузеру. Посылая необходимые заголовки ответа, мы можем из скрипта вернуть данные в удобоваримом формате.
Теперь о самой логике. Непосредственно сами файлы после загрузки на сервер мы можем хранить в отдельной закрытой директории, либо в базе данных в бинарном виде. Отдавать файлы можно посредством скрипта, в своем роде это напоминает концепцию единой точки входа, передавая ему параметр, указывающий на конкретный файл. В этом файле скрипте можно сделать всё что угодно, как говорилось ранее, проверить авторизацию пользователя, записать информацию о запросе, сделать временной интервал, в течении которого можно получать конкретный файл, и т.д.
Пример. Предположим, у нас есть файл обычный файл – изображения, который лежит на сервере, путь к нему таков:
./images/my_image.jpeg

Читайте также:  Test

Доступ к директории /images для браузеров закрывается соответственно, сделать это можно привычно через .htaccess. Получать изображения мы будем через скрипт, прозовем его getimage.php.

 array( 'path' => './images/my_image.jpeg', 'type' => 'image/jpeg' ); ); # Проверяем наличие нужного ключа в массиве if (array_key_exists($_GET['id'],$arFiles)) < # отдаем файл header("Content-type: ".$arFiles[$_GET['id']]['type']); readfile($arFiles[$_GET['id']]['path']); >else < # файла нет header("HTTP/1.0 404 Not Found"); die; >?>

Запрос файла мы можем произвести в браузере таким образом:
getimage.php?id=my_file

Произойдет следующее, в массиве $arFiles будет произведен поиск элемента с ключем my_file, в случае успеха в качестве ответа посылается изображение, в противном случае последует заголовок 404 Not Found.

VK FB TW Whatsapp Telegram Email

Источник

Вывести картинку через php, возможно?

Доброго времени суток!
Первый раз сталкиваюсь на практике, и еще не знаю толкового решения.
Есть папка IMG в которой картинки которые должны отображаться только в web через php, и папка закрыта htaccess deny from all
Как правильно отображать данные картинки? Через htaccess разрешить ip сервака или средствами php както подлезть? Можно еще через бд, но это дурной путь на мой взляд.
Заранее благодарю!

Простой 5 комментариев

Описание сумбурное. Кто должен иметь доступ к картинкам?
Что такое «разрешить ip сервака» или «подлезть»?

Ninazu

Не понятно где лежит IMG, за пределами корня сайта?
Кто добавил запрет на папку? Зачем это было сделанно?

Compolomus

Stalker_RED, описал как мог, если вам будет легче то так.
Задача: папка img в корне, в которой файлы (личные и секретные) которые отображаем только авторизованным юзерам, остальным полный запрет к файлам

Ninazu, img лежит в корне,зачем и кто добавил запрет, понятия не имею. Зачем догадываюсь )) я лишь делаю некий костыль, который отобразит только картинки на странице.
Был бы очень благодарен, если бы описали как правильно это делается

Читайте также:  Распределенные программные системы java

Compolomus

Пишите парсер папки и по имени отдавайте картинку

$img = $_GET['img']; // Тут проверки и прочее $image = imagecreatefromstring('/dir/' . $img); // Тут можно наложить водяной знак или уменьшить, превью типо header('Content-Type: image/png'); imagepng($image);

Создайте скрипт с этим содержимым и отдавайте ссылкой
/script.php?img=123.png
/script.php?img=456.jpg
Это чисто пример без проверок и прочего, можете ещё всего там добавить по желанию

Ninazu

Мне кажется задача изначально неправильная. Но если костыль нужен, то так

Создаём файл который будет принимать адресс картинки, брать ее с диска, и отдавать с соответсующими заголовками

P.S. Не забыв, что до заголовков не должно быть никакого вывода, а то они не сработают

Compolomus

Заголовок ещё надо, а то в арбуз кракозябрики полезут
P.S. Теперь норм
Кстати можно ещё и буфер очистить перед выводом

Maksimoff

скрипты имеют доступ и к закрытой директории, так что айпишник разрешать не надо. а выводить через заголовок, как уже написали

header("Content-Type: image/png"); // mime-type пикчи в заголовке // можно добавить другие заголовки, если необходимо readfile($image); // $image - строка с путем к файлу

Источник

Как вывести картинку на экран через php

Урок по выводу картинки на php

Здравствуйте дорогие друзья, сегодняшняя небольшая заметка будет посвящена выводу изображения посредством PHP.

Не так давно я писал о том, как разместить картинку на сайте, сегодня мы сделаем тоже самое на php.
Итак, давайте перейдем к делу..

Допустим, у меня имеется вот такая вот картинка:

изображение авто

Она располагается (в моем случае) по адресу:

http://sergey-oganesyan.ru/wp-content/uploads/2013/12/auto.jpg

Мне нужно вывести эту картинку на экран, зная её адрес – это делает командой “echo”

Приведу сразу весь код с комментариями..

         '; //Закрываем PHP код ?>  

Как вывести картинку в цикле

Если вам необходимо вывести одну и ту же картинку многократное количество раз, то для этого воспользуемся, например, циклом “FOR”

Читайте также:  What are deprecated html elements

Код будет выглядеть следующим образом..

          0; $i--) //Выводим картинку пока переменная "count" больше 0 //Выводим картинку с новой строки, дописав в конце "
" echo '
'; //Закрываем PHP код ?>

На это данный небольшой урок закончен, желаю вам удачи!

Если вам нужна помощь в создании какого-либо функционала, сайта, сервиса, тестов или калькуляторов, то готов помочь, подробнее на странице услуг.

Как вывести картинку на экран через php : 2 комментария

  1. Юрий 18.04.2015 Большое спасибо за статью! Надо было в виджет php вставить картинку. Благодаря Вам получилось

Источник

Оцените статью