2009-07-23 22 views
6

Entiendo los conceptos básicos del seguimiento de píxeles, puedo insertar un píxel que hace referencia a una imagen en mi dominio de seguimiento a otros sitios web.Cómo utilizar el seguimiento de píxeles a través de dominios en PHP

Sin embargo, ¿cómo puedo aumentar ese recuento de píxeles real en mi dominio de seguimiento? ¿Hay algún tipo de registro que me diga cada vez que se sirvió esa imagen de píxel? ¿Soy capaz de hacer algo como:

<img src="http://www.foo.com/serveImage/getImage.php?id=5123" /> 

continuación, tienen la página getImage, servir hasta la imagen, y el incremento en base a la identificación que se aprobó en? o hay una mejor manera de lograr esto?

Gracias de antemano.

Respuesta

13

si quieres simplemente salida de un gif esta es una manera sencilla rápida, sólo asegúrese de que su guión no hace nada de salida más antes o después:

header("Content-type: image/gif"); 
header("Content-length: 43"); 
$fp = fopen("php://output","wb"); 
fwrite($fp,"GIF89a\x01\x00\x01\x00\x80\x00\x00\xFF\xFF",15); 
fwrite($fp,"\xFF\x00\x00\x00\x21\xF9\x04\x01\x00\x00\x00\x00",12); 
fwrite($fp,"\x2C\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02",12); 
fwrite($fp,"\x44\x01\x00\x3B",4); 
fclose($fp); 
+0

Esto genera la imagen directamente en el búfer sin cargar primero un archivo. Esto es más rápido. – Andy

3

Sí, usted tiene la idea correcta.

Proporciona a cada sitio o página una ID única, que luego se transfiere a la imagen src. Por lo tanto, en su ejemplo, la ID es 5123.

En su secuencia de comandos getImage.php, utilice esta ID para incrementar la base de datos (o como grabe los datos) y devolver cualquier imagen que desee. Si desea que la imagen que devuelve muestre el número de visitas, puede crear una imagen sobre la marcha con el GD extention; consulte el manual de PHP para obtener más información al respecto.

3

este es mi código de la derrota:

<?php 

$id = $_GET['site_id']; 

// do track 

$imageFile = 'images/pixel.jpg'; 
$im = imagecreatefromjpeg($imageFile); 
header('Content-type: image/jpeg'); 
imagejpeg($im); 


?> 
+5

Si desea reducir el uso de recursos, no use GD para leer el archivo de imagen y escupirlo de nuevo. Simplemente envíe el encabezado de contenido y luego use 'readfile()'. – gnud

+0

@gnud tiene usted razón ... ahora será más inteligente redireccionar a la imagen con un encabezado HTTP 301 ... –

1

especie de respuesta tangencial, pero demasiado largo para un comentario:

no necesariamente tienen que incrementar nada, dependiendo de cómo ponerlo en práctica. Si pretende hacerlo súper rápido, bastará con confiar en los registros de solicitud del servidor. Cada solicitud de "getImage.php? Q = 5123" ya estará allí, solo necesita extraer la información relevante de la cadena de consulta.

Puede analizar los registros en una buena base de datos consultable más adelante (a través de cron et al), fuera de banda, donde no afectará la publicación de los errores de seguimiento. Hacerlo todo de una vez es un poco más elegante, pero si está atendiendo muchas solicitudes, los registros ya están allí de todos modos.

Bonificación: los registros del servidor también tienen referencias & marcas de tiempo, por lo que puede ver más fácilmente si alguien está directamente martillando getImage.php o vinculándolo desde otra parte para jugar con los números, si esos números valen algo.

Cuestiones relacionadas