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:
- Encuentra las rutas de imágenes y las almacena en la variable $results (array)
- Por cada coincidencia, almacenamos el path de la imagen original en $img_path
- Almacenamos la nueva ruta en $img_clean
- 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.
Soluciones Globales de Internet
Hosting, Dominios, Tiendas Virtuales, Alojamientos, Relojes, Regalos de Empresa, Minimotos, Motos, Cascos.
Al parecer todavia ImgRed no ha arreglado.
Tan bueno komo tomar un poko mas de tiempo linkeando las imagenes a tu ftp o a imageshack =/