Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/07/2007, 16:16
Avatar de marcolandia
marcolandia
 
Fecha de Ingreso: febrero-2007
Ubicación: En mi hermosa nación Arge
Mensajes: 107
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: Contabilizar descargas de una imagen (open rate)

Hola, si tenés tu web alojada en una empresa de hosting (lo más probable) te podés fijar en el panel de control (si es que te dan uno) si hay alguna opción que diga los archivos descargados... pero seguramente ya te fijaste eso xD, o comunicarte con ellos para que te den esta opción
si es un server propio, tuyo, si tenés configurado el servidor web para hacer un log de cada archivo que se pide, ahí te podés fijar...
O podés hacer un script en PHP que cuente las visitas...
este code lo uso yo en mis webs y desde un panel de control que programé yo veo todas las visitas :D
creá estas dos tablas:
CREATE TABLE `visitas` (
`referer` text NOT NULL,
`ip` varchar(15) NOT NULL default '',
`user-agent` text NOT NULL,
`pagina-visitada` text NOT NULL,
`fechahora` datetime NOT NULL default '0000-00-00 00:00:00'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
esta tabla, que se llama `visitas` guarda absolutamente TODAS las visitas.

y esta otra que se llama visitas-unicas, nada más guarda... las visitas únicas :D

CREATE TABLE `visitas-unicas` (
`referer` text NOT NULL,
`ip` varchar(15) NOT NULL default '',
`user-agent` text NOT NULL,
`pagina-visitada` text NOT NULL,
`fechahora` datetime NOT NULL default '0000-00-00 00:00:00'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Bueno ya tenemos las dos tablitas creadas
ahora tenemos este script:
Código PHP:
if(!$conexion=mysql_connect('server','user','password')){
echo 
"<span class=\"atencion\">Error al conectar con la base de datos... Porfavor contacta al webmaster enviando un e-mail a: [email protected]</span>";
exit();
}else{ 
//nos conectamos al server
mysql_select_db("base_De_Datos",$conexion);} //seleccionamos la db con la que vamos a trabajar

$query=mysql_query("select `ip`,`fechahora`  from `visitas` where ip='".$HTTP_SERVER_VARS["REMOTE_ADDR"]."' and `fechahora` like '".date("Y-m-d")."%'");
if(
mysql_num_rows($query)=="0"//si esta persona NO visitió hoy, insertamos sus datos en la tabla `visitas-unicas`
{
    
//echo "ES CERO--> ".mysql_num_rows($query);
mysql_query("INSERT INTO `visitas-unicas` (`referer`,`ip`,`user-agent`,`pagina-visitada`,`fechahora`) VALUE ('".strip_tags(mysql_real_escape_string($HTTP_SERVER_VARS["HTTP_REFERER"]))."','".strip_tags(mysql_real_escape_string($HTTP_SERVER_VARS["REMOTE_ADDR"]))."','".strip_tags(mysql_real_escape_string($HTTP_SERVER_VARS["HTTP_USER_AGENT"]))."','".strip_tags(mysql_real_escape_string($_SERVER['REQUEST_URI']))."','".date("Y-m-d H:i:s")."');");  
}     
   
    
//lo insertamos en la tabla de todas las visitas juntas:
mysql_query("INSERT INTO `visitas` (`referer`,`ip`,`user-agent`,`pagina-visitada`,`fechahora`) VALUE ('".strip_tags(mysql_real_escape_string($HTTP_SERVER_VARS["HTTP_REFERER"]))."','".strip_tags(mysql_real_escape_string($HTTP_SERVER_VARS["REMOTE_ADDR"]))."','".strip_tags(mysql_real_escape_string($HTTP_SERVER_VARS["HTTP_USER_AGENT"]))."','".strip_tags(mysql_real_escape_string($_SERVER['REQUEST_URI']))."','".date("Y-m-d H:i:s")."');");?> 
y en el mail ponés este simple código html: (suponiendo que el script se llama "contador_visitas.php"):
<img src="contador_visitas.php" alt="cool"/>
Y bueno así de simple, en la tabla `visitas-unicas` van a estar todas las visitas únicas y en la tabla `visitas` todas las visitas como dije antes, obviamente si querés podés eliminar la tabla ´visitas` y sacar esta línea del script y nada más te va a contar las visitas únicas:
Código PHP:
mysql_query("INSERT INTO `visitas` (`referer`,`ip`,`user-agent`,`pagina-visitada`,`fechahora`) VALUE ('".strip_tags(mysql_real_escape_string($HTTP_SERVER_VARS["HTTP_REFERER"]))."','".strip_tags(mysql_real_escape_string($HTTP_SERVER_VARS["REMOTE_ADDR"]))."','".strip_tags(mysql_real_escape_string($HTTP_SERVER_VARS["HTTP_USER_AGENT"]))."','".strip_tags(mysql_real_escape_string($_SERVER['REQUEST_URI']))."','".date("Y-m-d H:i:s")."');"); 
si querés que la imagen muestre algo, podés agregar esto al script:
Código PHP:
$image imagecreatefromjpeg("imagen.jpg");
//definimos el encabezado de acuerdo con el tipo de datos de salida
header("Content-type: image/png");
//generamos la imagen
imagepng($image);
//liberamos la memoria ocupada por la imagen
imagedestroy($image); 
y te va a mostrar image.jpg
Un saludo y decime cualquier error o lo que sea