jueves, 4 de junio de 2009

Pasar .php por .jpg



Algunas veces resulta necesario "disfrazar" nuestro script php por cualquier otra extensión de archivo, en este caso utilicé .htaccess y PHP para ejecutar un script en php para "trackear" una foto y contar la cantidad de veces que es visualizada,

Sin lugar a dudas de hecho hay más de una forma de hacer esto, como siempre se escuchan sugerencias, de los amigos lectores de este blog.

En el siguiente ejemplo no solamente disfrazaremos un archivo .php por un .jpg sino que haremos algo más, sabremos quien ha visitado nuestra foto, lo notificaremos por e-mail y guardaremos en un archivo .dat la información del visitante, fecha de descarga, ip, el enlace que han seguido para ver la foto y su navegador, luego procesaremos la foto volcándola con las cabeceras headers para que nuestro script sirva la .jpg en el browser.

sin más palabras manos a la obra:

Nota (Debemos tener habilitado mod_rewrite en el servidor Apache )

Antes de empezar creamos una carpeta en nuestro espacio web por lo general en /public_html

a la carpetita le colocaremos el nombre "mis-fotos" buscaremos nuestra foto .jpg preferida y la subiremos en a este directorio que hemos creado y la renombraremos a "photo01_.jpg".

creamos un archivo de nombre index.html y lo subimos a mis-fotos para prevenir un listado de directorio,

Ok ahora pasemos a lo sig.:

Creamos un .htaccess con el siguiente código:

RewriteEngine On
RewriteRule ^foto.jpg$ foto.php

Por otro lado preparamos nuestro script que se llamará foto.php que se comportará como un pseudo .jpg para trackear a los visitantes de nuestra foto

<?php
$date = date("d/m/Y H:i:s");
$desde = $_SERVER['HTTP_REFERER'];
$ip = $_SERVER['REMOTE_ADDR'];
$navegador = $_SERVER['HTTP_USER_AGENT'];
$fh=fopen("tracking.dat","a+");
fputs($fh,"$date|$ip|$desde|$navegador\n");
fclose($fh);
header("Content-Type: image/jpeg");
@readfile('photo01_.jpg');
@mail("miemail@dominio.com", "Han visitado la foto!!!", "Alguien miro la foto.",
"From: miemail@dominio.com\nReply-To: miemail@dominio.com\nX-Mailer: PHP\nErrors-To: miemail@dominio.com");
?>



Eso es todo!!!, espero les haya gustado, y como siempre cualquier sugerencia y mejora será bien recibida.
Reacciones:

4 comentarios:

Anónimo dijo...

Do you people have a facebook fan page? I looked for one on twitter but could not discover one, I would really like to become a fan!

Daniel dijo...

estamos trabajando en eso, gracias por comentar, deja tu nombre real, saludos!

Anónimo dijo...

Y Como se haria para que un pagina php, la podamos convertir/exportar/guardar (cualquiera de las 3 opciones) como jpg,gif o png, teniendo en cuenta que este archivo php, es una tabla que se actualiza cada hora y se tiene que enviar por mail en formato de imagen. ?

Slds.

Daniel dijo...

Supongamos que le das salida xls a una consulta de un DB podrías volcar la información a una imagen usando una libreria de GD con alguna funcion tipo txt2img hay cientos de librerias te sugiero visitar www.phpclasses.org