Cómo no hacer hotlinking con PHP e ImgRed

baluart13 Abril 2007 - 12:54am 3 comentarios
Enviar por Email Imprimir

Hace unos días se ha lanzado un servicio web muy interesante para evitar hacer hotlinking (mostrar imágenes alojadas en web ajenas). La forma de aplicarlo es muy sencilla, y aunque he visto que el sistema tiene algunos fallos, la herramienta es nueva, veo que ya lo han corregido.

ImgRed es un servicio web que te permite hacer hotlinking sin robarle el ancho de banda a otro sitio web (Redirecciona las imágenes). ¿Cómo utilizar ImgRed? Muy simple. Basta con añadir la url de imgred antes de la url de la imagen a mostrar. Por ejemplo:

<img src="http://imgred.com/http://www.mozilla.com/img/firefox/main-feature2.jpg" />

Además, el sistema también nos permite mostrar thumbnails, el path para estos sería:

<img src="http://imgred.com/tn/http://www.mozilla.com/img/firefox/main-feature2.jpg" />

Sin embargo, aún no lo recomiendo, pues he visto que muchas veces no muestra la imagen correctamente. Espero que pronto lo solucionen.

Ahora bien, ya hemos visto que a la hora de publicar podemos evitar el hotlink simplemente añadiendo http://imgred.com/ a nuestros artículos. Sin embargo, quien nos asegura que el servicio funcione correctamente por mucho tiempo.

Se imaginan que después de 6 meses publicando artículos, el sitio caiga ó lo vuelvan Premium. ¿Qué haríamos? ¿Cambiar las urls? Una buena alternativa, es utilizar una pequeña función PHP que he creado para utilizar ImgRed automáticamente.

Utilizando ImgRed con PHP: img_replace()

La función es muy sencilla, por lo que podemos personalizarla, por ejemplo añadirle un parámetro para activarla/desactivarla del panel de control ó añadirle algunas líneas para que diferencie las imágenes externas de las internas, etc. lo interesante de la función es ver como parsea el contenido, ubica los paths de las imágenes y añade ImgRed.

Las funciones PHP importantes de nuestra función son:

preg_match_all(): Busca coincidencias y las ordena.
preg_replace(): Reemplaza coincidencias.

¿Cómo funciona nuestra función img_replace()? Lo que hace es lo siguiente:

  1. Encuentra las rutas de imágenes y las almacena en la variable $results (array)
  2. Por cada coincidencia, almacenamos el path de la imagen original en $img_path
  3. Almacenamos la nueva ruta en $img_clean
  4. Hacemos el reemplazo

Ahora veamos el código:

function img_replace($content){

// parseamos el contenido y recuperamos los paths de las imágenes
preg_match_all( "'<\s*img\s.*?src\s*=\s*([\"\'])?(?(1) (.*?)\\1 | ([^\s\>]+))'isx",
$content, $results, PREG_SET_ORDER);

//la almacenamos en $img_path
if($results){
foreach ($results as $result) {
$img_path = $result[2];
//evitamos el hotlinking
$img_clean = "http://imgred.com/$img_path";
$content = preg_replace("^".$img_path."^", $img_clean, $content);
}
}
return $content;
}

Para utilizar la función, en el mismo fichero escriban:

echo img_replace($content);

donde $content almacena la información del artículo incluyendo los hotlinkings.

Como ven, la función es sencilla, pero muy útil. Con pocas modificaciones, podemos utilizarla en nuestros sites para extraer imágenes del contenido, etc.

Espero les sirva.

Comentarios

Imagen de Asuncion

Soluciones Globales de Internet
Hosting, Dominios, Tiendas Virtuales, Alojamientos, Relojes, Regalos de Empresa, Minimotos, Motos, Cascos.

Imagen de Martha

Al parecer todavia ImgRed no ha arreglado.

Imagen de kaoz
kaoz

Tan bueno komo tomar un poko mas de tiempo linkeando las imagenes a tu ftp o a imageshack =/

Dejar comentario

Tutoriales

Cómo descargar Paper de Facebook aún fuera de EE.UU.
La semana pasada, la famosa red social anunció "Paper", una...
Cómo transferir archivos grandes de PC a PC
Pasar datos de una computadora a otra puede ser bastante sencillo...
Qué hacer antes de descargar iOS 7
A sólo una horas de la llegada del iOS 7, recuerden que antes de...

Artículo Recomendado

Google agota un modelo Google Glass en su único día de ventas abiertas
Google Glass hizo del martes su día. Por primera vez, desde su lanzamiento, cualquiera en EE.UU. pudo adquirir sus gafas inteligentes y la respuesta del público no pudo ser mejor. Así es, en el que podría ser su... más