2013-02-01 6 views
12

OK, hier ist ein Ziel, das ich seit einer Weile gesucht habe.So erstellen und implementieren Sie einen Pixel-Tracking-Code

Wie bekannt ist, die meisten Werbung und Analytik-Unternehmen verwenden, um einen so genannten „Pixel“ Code, um Websites Ansichten zu verfolgen, Transaktionen, Umwandlung usw.

Ich habe eine allgemeine Idee auf, wie es funktioniert, ist das Problem ist, wie man es umsetzt. Die Tracking-Codes bestehen aus wenigen Teilen.

  1. Der Tracking-Code selbst. Dies ist der Code, den die Benutzer auf seiner Webseite im Abschnitt <head> einfügen. Das Hauptziel dieses Codes besteht darin, einige kundenspezifische Variablen festzulegen und die Datei *.js aufzurufen.

  2. *.js Datei. Diese Datei enthält die ganze Magie von CRUD (create/read/update/delete) Cookies, verfolgt die Ereignisse des Benutzers und die Interaktion mit der Webseite.

  3. Der Pixelcode. Hierbei handelt es sich um ein -Tag mit dem src-Attribut, das auf eine Image-Datei verweist, die alle auf der Seite gesammelten Parameter aufnimmt und in der Datenbank speichert.

Beispiel:

Wordpress Pixelcode: <img id="wpstats" src="http://stats.wordpress.com/g.gif?host=www.hostname.com&amp;list_of_cookies_value_pairs;" alt="">

Google Analitycs: http://www.google-analytics.com/__utm.gif?utmwv=4&utmn=769876874&etc

Jetzt ist es offensichtlich, dass die *.gif Anforderung eine serverseitige Skriptsprache, um zu erreichen, muss Lesen Sie die Parameterdaten und speichern Sie sie in einer Datenbank.

Hat jemand eine Idee, wie man das in Zend implementiert?

UPDATE Eine andere Sache, die ich interessiert bin, ist: Wie Browser des Benutzers zu vermeiden, die im Cache gespeicherte *.gif zu laden? Wird ein zufälliger Parameterwert den Trick machen? Beispiel: src="pixel.gif?nocache=random_number" wobei der nocache Parameterwert bei jeder Anfrage unterschiedlich ist.

+0

Hallo, überprüfen Sie dies auf dem Chache-Problem. http://StackOverflow.com/a/18852257/318489 –

+0

Ein schneller Trick für das Cache-Problem besteht darin, den Browser aufzufordern, das Image nicht zu cachen.'header ("Cache-Control: no-cache, must-revalidate"); '' header ("Verfällt: Sa, 26 Jul 1997 05:00:00 GMT"); ' – mixdev

Antwort

0

Zunächst muss die *.gif nicht dieser Dateityp sein, das einzige, was von Interesse ist, ist die Content-Type HTTP-Header. Setze das am Anfang auf image/gif (oder irgendeinen anderen geeigneten Typ), führe deinen Code aus und rende eine Art Bild in den Antworttext.

+0

Danke, ja, ich habe die richtigen Header erstellt und die' pixel.gif' Datei mit 'PHP'' imagecreatefromgif erzeugt() ', die tatsächlich die 'php'-Erweiterung hat. Die einzige Sache ist, dass, wenn "www.customerpage.com" lädt "" ZF einen Fehler wirft, dieser Controller 'pixel.gif' nicht existiert. –

+0

Haben Sie eine Route hinzugefügt? Und siehe auch die Antwort auf http://stackoverflow.com/questions/3203354/php-script-to-render-a-single-transparent-pixel-png-or-gif - das wird viel schneller als mit imagecreatefromgif –

+0

über sein die Route, noch nicht, ich frage mich, ob es einen Weg gibt, es ohne Routing zu tun. Und danke für den Link für das transparente Pixel, es ist wirklich nützlich. –

2

Da Zend mit PHP erstellt wurde, könnte es sich lohnen, die folgende Frage und Antwort zu lesen: Developing a tracking pixel.

Zusätzlich zu dieser Antwort und auf der Suche nach einer Möglichkeit, das Tracking-Image nicht zwischenzuspeichern, ist es am einfachsten, eine eindeutige/zufällige Zeichenfolge an den Cache anzuhängen, die zur Laufzeit generiert wird.

Zum Beispiel serverseitige und mit der Schaffung eines jeden Bildes, Sie eine zufällige URL-ID könnte hinzufügen:

<?php 

    // Generate random id of min/max length 
    $rand_id = rand(8, 8); 

    // Echo the image and append a random string 
    echo "<img src='pixel.php?a=".$vara."&b=".$varb."&rand=".$rand_id."'>"; 

?> 
0

Nun, alle oben genannten Codes korrekt sind, und ist gut, aber um sicher zu sein, der Kerl oben erwähnt „g.gif“

Sie können nur einen einfachen pHP-Code hinzufügen zu einem SQL- oder fwrite („file.txt“, $ geöffnet) wo var $ geöffnet dient als Zähler ++, wenn jemand geöffnet zu schreiben Ihre E-Mail ... und dann speichern Sie sie als "g.gif"

Um alle thi zu tun s fügen Sie einfach diese:

<Files "/thisdirectory"> 
AddType application/x-httpd-php .gif 
</Files> 

zu Ihrer „.htaccess“ Datei aber sicher sein, ein neues Verzeichnis für das g.gif zu machen oder whatever.gif wo das Verzeichnis enthält nur g.gif und .htaccess

0

Ich füge nur meine 2 Cent zu diesem Thread hinzu, weil ich denke, dass eine wichtige und häufig verwendete Option fehlt: Sie brauchen nicht unbedingt eine Skriptsprache, um die Anfrage zu erfassen. Ein effizienterer Ansatz besteht darin, das Zugriffsprotokoll des Webservers (wie zum Beispiel das Zugriffsprotokoll für Apache) zu verwenden, um die Anforderung zu protokollieren und dieses Protokoll dann mit den Tools zu bearbeiten, die Sie für geeignet halten, wie zum Beispiel ELK-Stack.

Dies macht die Bearbeitung der Anfragen viel leichter, da keine Skriptsprache geladen wird, um die Antwort vorzubereiten, nur native Apache-Antwort, die in der Regel viel effizienter ist.