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 =/

Tutoriales

Cómo descargar videos de VK.com
En este artículo voy a explicar como descargar videos y películas...
Descargar Facebook Móvil Gratis
Por si aún no lo han hecho, es posible descargar Facebook Móvil...
Cómo generar tráfico web con las redes sociales - Paso a Paso
Muchas empresas están publicando contenidos como la forma de crear...

Artículo Recomendado

3 Tips cruciales para recuperar archivos eliminados
¿Te imaginas perder el trabajo de toda una semana en tan solo unos segundos? Todos hemos pasado por este problema. Quizás eliminamos por error un archivo importante o lo borramos sin pensar que era valioso para otro... más