Request abfeuern bevor man Seite über Link verlässt


Tommy57

Erfahrenes Mitglied
#1
Hallo,

ich bau gerade ein Script, wo es Partnern ermöglicht werden soll, Werbung auf der Page zu schalten. Dabei würde ich gerne den Klick innerhalb des Werbe Containers tracken, um so ein Kontingent zu berechnen.

Prinzipiell könnte innerhalb des Werbe Containers, was ein DIV sein wird, alles mögliche sein, von einem einfachen Link, über einen Banner bis hin zum einem iFrame. Ich möchte also, dass ein Klick innerhalb des DIV Containers einen kurzen Request abfeuert und dem Server bescheid gibt, dass der User gerade mit der Werbung interagiert hat. Mit sehr hoher Wahrscheinlichkeit verlässt der User dabei die Seite. Aktuell schlagen alle Versuche fehl, da der Klick auf den Link nicht die Ausführung des Requests abwartet.

Jemand eine Idee, wie ich sowas realisieren könnte? Meine Idee wäre noch, dass man target="_blank" erzwingt.

Gruß, Tommy
 
Zuletzt bearbeitet:

basti1012

Erfahrenes Mitglied
#3
Wenn ich dich richtig verstehe geht das mit Ajax.
Musste das zwar auch erst testen weil ich nicht ganz sicher wahr ,aber es klappt.
Habe zum testen mal was gebastelt.
Homepage von Basti1012

Wenn du auf einen Link klickst ( Werbung ) ,sende ein Request die klick zum Php Script und der speichert es in einer Textdatei ( Datenbank geht auch ). Wenn du zurück gehst auf meiner Seite kannst du sehen was der Request auf den Server gespeichert hat .
Sollte für dein vorgaben wohl reichen. Falls ich das alles richtig verstanden haeb.
 

Tommy57

Erfahrenes Mitglied
#4
Hi basti1012,

vielen Dank für deine Mühe. Leider klappt das nur im Chrome. Die Idee hatte ich auch. Gefällt mir auch sehr, aber wie gesagt, klappt es zum Beispiel nicht im Firefox. Ich habe dahingehend die Strategie geändert, dass ich einfach ein Array als JSON-String in den Cookies ablege, wo ich vermerke, welcher wrapper einer werbe anzeige angeklickt wurde. Bei nächster Gelegenheit verarbeite ich den Cookie innerhalb der Applikation und entferne ihn. Ich könnte zusätzlich eine AJAX-Anfrage machen, für den Fall, dass ein neuer Tab geöffnet wurde. Aber denke mit der Strategie fahre ich ganz gut.

Ich kann leider auch nicht sicher stellen, dass jeder Werbepartner immer einen Link verwendet. Unter Umständen könnte es auch ein iFrame oder sonst was sein.
 

basti1012

Erfahrenes Mitglied
#5
Nagut ob es ein Link oder Iframe oder sonst was ist das ist Ajax ja egal. Du brauchst ja nur den klick oder das Iframe laden registrieren und dann den request machen. Aber das mit den Cookies verstehe ich auch nicht ganz. Wenn ich einmalig die Seite besuche und den Link anklicke,speicherst du bei mir den Cookie und willst ihn beim nächsten besuch wieder auslesen ? Wenn ich nie wieder komme wird der klick ja nicht gezählt ?

Aber das meine Variante nur bei Chrome geht das habe ich noch nicht getestet. Ich nutze Opera und so ein no-name Browser (Avant Browser ) bei den es geht. Aber ich teste mal Firefox und so ,weil ich sehe eigentlich kein Grund warum das nicht gehen sollte. Und wenn es bei mir auch nicht geht versuche ich mal ne Lösung zu finden:)
 

Tommy57

Erfahrenes Mitglied
#6
Hi basti1012,
ich denke, dass hat mit der Reihenfolge zu tun, in der die Events aufgerufen aufgerufen werden. Vermutlich hat das href-Attribut höhere Priorität im Firefox und wartet den asynchronen Aufruf nicht ab, bzw. führt ihn nicht einmal vernünftig aus?!
Zu der Lösung mit den Cookies:
Werbepartner sollen ein Kotingent bestimmen können oder vorgegeben bekommen, welcher aufgebraucht werden kann. Da es sich in der Regel um User handelt, die wiederkommen, bzw. die Seite regelmäßig nutzen, dürfte es kein Problem sein, die Cookies irgendwann auszulesen. Vermutlich wird im Normalfall für die Werbung eh ein neuer Tab geöffnet, wodurch ich deine Variante zusätzlich verwende, aber eben dann die Cookies auslese und nicht die Parameter über GET oder POST mitgebe.
Für den Fall, dass es sich hierbei um einen einmal User handelt, oder die Cookies verloren gehen, dann muss man es halt hinnehmen, dass an der Stelle eine Conversion nicht vernünftig gezählt werden konnte. Sollte aber nicht der Regelfall sein.
 

ComFreek

Mod | @comfreek
Moderator
#7
Ich würde gerne einfachere Variante in den Raum stellen: die Links der Werbepartner so abändern, dass sie zuerst auf https://example.com/your-site/registerAdClick?adId=...&forwardTo=... leiten und der Nutzer dann automatisch weitergeleitet wird.
Pass aber auf, dass dein Skript nicht arbiträr zu Seiten weiterleitet, die in es per $_GET bekommen hat. Das wäre eine social engineering Sicherheitslücke: Stell dir vor, Leute würden auf https://example.com/your-site/registerAdClick?forwardTo=https://badSite!! verlinken und Leute trauen diesem Link, eben weil sie deinen Domainnamen beinhaltet.
 

Tommy57

Erfahrenes Mitglied
#8
Danke für die Antwort ComFreek.
Ich habe das Ganze so angepasst, dass ein Admin ohne Programmierkenntnisse im Backend die Codes der Werbepartner einpflegt, z.B. Affiliate Links von Amazon. Ich fange dann den Klick auf den Container drum rum ab und speicher den Klick in den Cookies. Das funktionierte bei meinen Tests sehr gut. So muss ich nicht die Links anpassen. Könnten ja auch iFrames oder Google Adsense und ähnliches sein, wo ich das technisch nicht so einfach realisiert kriege.
 

Tommy57

Erfahrenes Mitglied
#9
@ComFreek
Dein Ansatz gefällt mir immer besser. Ich überlege aktuell nur noch, wie ich das machen soll, wenn es sich zb bei dem Werbebanner um ein iFrame oder so handelt. Also ich weiß jetzt leider noch nicht, was da später alles reinkommen soll. Der Admin trägt einfach einen Code in die Datenbank ein und der erscheint dann dort.

Wie machen das denn andere Seiten, wenn sie Werbung schalten (andere als Google Werbung). Sind das immer einfache Links mit einem Bild drinnen?