Указать <img> тег на изображение, динамически генерируемое PHP?
-
03-07-2019 - |
Вопрос
Можно ли перенаправить изображение на динамически сгенерированное изображение (используя PHP)?
У меня есть динамически созданное изображение, и оно имеет расширение ".PHP" (очевидно), и этот сервер не находится под моим контролем.Поэтому я хочу перенаправить "somename.jpg" (на моем сервере) на "remoteserver/dynamicimage.php" (на каком-нибудь удаленном сервере, не находящемся под моим контролем), чтобы я мог сразу связать его как <img src="somename.jpg"/>
и будет показано динамически сгенерированное изображение.
Пожалуйста, дайте мне знать, если это возможно.
Решение
Браузеры используют перенаправления для изображений.Создайте php-файл с именем "somename.jpg" и добавьте:
<?php
header('Location: http://www.otherserver.com/image.php');
Используйте директиву Apache Тип силы в файле .htaccess указать серверу обработать файл .jpg как php:
<Files somename.jpg>
ForceType application/x-httpd-php
</Files>
Или просто вызовите файл somename.php, если вам действительно не нужно расширение .jpg.
Вероятно, вы могли бы добиться этого, используя мод_алиас как хорошо, хотя я этого и не пробовал:
Redirect somename.jpg http://www.otherserver.com/image.php
Это также будет сохранено в файле .htaccess.
Другие советы
Функция header управляет HTTP-заголовком, который браузер использует для определения типа файла (или должен использовать, в любом случае.). Его можно использовать, чтобы сообщить браузеру, что скрипт генерирует файл изображения для загрузки, а не вывод HTML-скрипта:
header('Content-type: image/jpeg');
header('Content-Disposition: attachment; filename="somename.jpg"');
Попробуйте добавить что-то вроде этого в свой файл .htaccess
RewriteEngine on
RewriteRule ^(.*)\.jpg$ /scripts/$1.php
Это возможно, но приведет к перенаправлению HTTP:
RewriteEngine on
RewriteRule ^somename\.jpg$ http://remoteserver/dynamicimage.php [L]
Альтернативой могло бы быть использование прокси - сервер (см . P
Отметить), так что ваш сервер запрашивает удаленный ресурс и передает его обратно клиенту.
Другим, гораздо более сложным, но невероятно мощным способом было бы написать некоторый код обработчика, который активируется для этого локального URL-адреса расположения изображения.
Этот будет извлекать данные из внешнего URL-адреса и выводить данные с правильным типом mime.
Во-первых, вы также пишете некоторый код для кэширования этих данных, основываясь на том, что может быть осуществимо.
Таким образом, вы никогда не выдадите реальное местоположение изображения и даже сможете использовать некоторые секретные учетные данные, такие как logindata или сторонние файлы cookie, которые не должны появляться на вашем сайте.
Все это гораздо сложнее сделать, чем просто настроить перенаправление в конфигурации apache.Мы делали подобные вещи в случаях, когда в противном случае URL-адрес мог привести к утечке личной информации.