Apunta una < img > ¿Etiqueta a una imagen generada dinámicamente por PHP?

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

  •  03-07-2019
  •  | 
  •  

Pregunta

¿Es posible redirigir una imagen a una imagen generada dinámicamente (usando PHP)?

Tengo una imagen creada dinámicamente y tiene una extensión " .PHP " (obviamente) y ese servidor no está bajo mi control. Así que quiero redireccionar " somename.jpg " (en mi servidor) a " remoteserver / dynamicimage.php " (en algún servidor remoto que no esté bajo mi control) para poder vincularlo inmediatamente como < img src = " somename.jpg " / > y se muestra la imagen generada dinámicamente.

Hazme saber si esto es posible.

¿Fue útil?

Solución

Los navegadores siguen las redirecciones para las imágenes. Crea un archivo php llamado " somename.jpg " y añadir:

<?php
header('Location: http://www.otherserver.com/image.php');

Use la directiva de Apache ForceType en un .htaccess archivo para indicar al servidor que procese el archivo .jpg como php:

<Files somename.jpg>
    ForceType application/x-httpd-php
</Files>

O simplemente llame al archivo somename.php si realmente no necesita la extensión .jpg.

Probablemente podría lograr esto utilizando mod_alias también , aunque no lo he probado:

Redirect somename.jpg http://www.otherserver.com/image.php

Esto también iría en un archivo .htaccess.

Otros consejos

La función de encabezado controla el encabezado HTTP, que es lo que el navegador utiliza para determinar el tipo de archivo (o debería, en cualquier caso). Se puede usar para indicar al navegador que el script está generando un archivo de imagen para descargar. , en lugar de la salida del script HTML:

header('Content-type: image/jpeg');
header('Content-Disposition: attachment; filename="somename.jpg"');

Intente agregar algo como esto a su archivo .htaccess

RewriteEngine on
RewriteRule ^(.*)\.jpg$ /scripts/$1.php

Es posible, pero daría lugar a una redirección HTTP:

RewriteEngine on
RewriteRule ^somename\.jpg$ http://remoteserver/dynamicimage.php [L]

Una alternativa sería utilizar un proxy (ver < a href = "http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule" rel = "nofollow noreferrer"> P flag ), para que su servidor solicita el recurso remoto y lo devuelve al cliente.

Otra forma mucho más complicada pero increíble sería escribir un código de controlador que se active para esta URL de ubicación de imagen local.

Este obtendría los datos de la URL externa y generará los datos con el tipo de mimo correcto.

Uno también escribe algo de código para almacenar en caché estos datos basándose en lo que sea posible.

De esta manera, nunca revelaría la ubicación real de la imagen e incluso podría usar algunas credenciales secretas como logindata o cookies de terceros que no deberían aparecer en su sitio.

Todo esto es mucho más difícil de hacer que configurar una redirección en la configuración de apache. Hicimos cosas como esta en los casos en que la URL filtraría información privada de lo contrario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top