Указать <img> тег на изображение, динамически генерируемое PHP?

StackOverflow https://stackoverflow.com/questions/806599

  •  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-адрес мог привести к утечке личной информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top