Enter your phone number here
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
anfrage
anzeigen
banner
code
dank
date
datei
datenbank
ergebnis
funktion
http
jemand
parameter
senden
server
speichern
string
tag
url
werbung
-
Liebe Lima User,
Ich will eine Werbe-Seite entwerfen, und überprüfen wenn tag/jemand">jemand auf Werbung klickt, z.B. bei http://werbung.online-geld-system.de
gibt es ja diesen Banner:
<script type="text/javascript" src="http://www.adshot.de/click_adshot/paidview.php?f=468&id=nathanaelus&subCategory="></script>
Kann ich es überprüfen ob jemand darauf klickt ?
über jegliche Hilfe wäre ich dankbar
mfg nathanaelus
Beitrag zuletzt geändert: 4.6.2012 13:29:14 von nathanaelus -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hast du eine Datenbank laufen, in der du die klicks aufzeichnen kannst?
-
Ja habe ich, hättest du dann eine Idee ?
-
Schau dir doch mal den Beitrag an ...
http://www.lima-city.de/thread/onclick-wert-in-datenbank-uebergeben/page%3A0/perpage%3A20
... ich denke das ist genau das was du suchst.
Beitrag zuletzt geändert: 4.6.2012 14:24:48 von cad-stock -
Super, vielen Dank!
-
lässt sich aber überlisten!
Bei allem was javascript angeht, muss man aufpassen, da javascript sehr leicht manipuliert werden kann.
In diesem Fall wäre es zwar einfacher auf den Banner zu klicken als da was zu manipulieren, aber dennoch solltest du das beachten. -
mhh das ist wahr... Gäbe es denn keine ganze PHP alternative?
-
Hier noch eine AJAX Lösung
wenn Du mehrere Banner hast, um bestimmte Banner-Klicks loggen willst,
dann musst Du jedem Banner eine eindeutige ID (oder Name) geben,
damit klar ist, welcher Banner angeklickt wurde (hier BSP: banner_123)
entweder baust Du den onCkick Event direkt in den <script> TAG ein
<script type="text/javascript" onclick="logClick('banner_123')" src= ... </script>
ich weiss aber nicht, ob das in einem <script> TAG so gut ist :O
oder du setzt ein anderen TAG (z.B: <span> TAG) mit der id drum herum
<span id="banner_123" onclick="logClick(this.id)" /> <script type="text/javascript" src= ... </script> </span>
wichtig ist halt, dass jeder Banner auch seine eigene id hat
damit Du den Klick auch dem Banner zuordnen kannst
der HTML-Code:
<html> <head> <title>Homepage</title> <script type="text/javascript"> function logClick(link_id) { var logscript = 'log_click.php'; var milli_sec = new Date().valueOf(); // ---- code for IE7+, Firefox, Chrome, Opera, Safari if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } // ---- code for IE6, IE5 else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } /* ---- write responseText into id="ergebnis" ---- xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("ergebnis").innerHTML=xmlhttp.responseText; } } ---- */ xmlhttp.open("GET",logscript+"?id="+link_id+"&ms="+milli_sec,true); xmlhttp.send(); } </script> </head> <body> <div id="content"> <br /> <span id="banner_123" onclick="logClick(this.id)" /> <!-- Start Banner Code --> <script type="text/javascript" src= ... </script> <!-- Ende Banner Code --> </span> <br /> </div> <div id="ergebnis"></div> </body> </html>
Erklärung zu JS / AJAX:
Durch einen Klick auf den TAG mit dem onClick-Event
werden GET Werte an eine PHP-Datei (hier: og_click.php) übergeben
diese GET-Werte (Banner-ID, Timestamp in MS, ... ) kannst Du dann loggen / speichern
in der Datei: var logscript = 'log_click.php';
kannst Du dann die Klicks erfassen und loggen / speichern (in MySQL-Tabelle)
als Parameter im onClick-Event übergibst Du eine ID (oder einen Namen)
um den Banner, der geklickt wurde, eindeutig zu identifizieren (welcher)
das JavaScript fügt als GET-Wert noch den unix Timestamp (in Millisekunden) dazu
Du kannst nehr beliebig mehr GET-Werte einfügen (Referer, User-IP, etc...)
der Timestamp ist wichtig, damit jeder Klick "neu" geloggt werden kann
weil ohne den würde der vorherige Klick noch im Cache stecken,
und somit würde kein neuer Request "gesendet" werden ... xmlhttp.send()
eine User-IP wäre evtl Sinnvoll, wenn man Mehrfach-Klicks von Unique-Klicks unterscheiden will
die könnte man per PHP innerhalb des Javascript holen (wenn die Seite eine .php-Seite ist)
var logscript = 'log_click.php'; var milli_sec = new Date().valueOf(); var user_ip = '<?php echo $_SERVER['REMOTE_ADDR']; ?>';
und dann als GET Parameter für den Aufruf anfügen
xmlhttp.open("GET",logscript+"?id="+link_id+"&ms="+milli_sec+"&userip="+user_ip,true);
somit würde in der log_click.php auch ankommen: $_GET['userip'] (für IP-Sperre, etc.)
... wie du das "speichern in MySQL" machst, ist hoffentlich klar :) ... INSERT INTO ...
... das Cache-Problem bei AJAX Requests kann man evtl. auch anders lösen,
z.B. mit header Cache-Control o.ä. ... oder halt immer Timestamp mit übergeben
PS
den Teil hier:
/* ---- write responseText into id="ergebnis" ---- xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("ergebnis").innerHTML=xmlhttp.responseText; } } ---- */
kannst Du auch weglassen, ist ehh aus-kommentiert
und soll nur zeigen, dass man den Inhalt, den log_click.php ausgibt
auch wieder auf der Seite (von dem der Klick aus ging) anzeigen lassen kann
(also in ein bestimmtes DIV rein-schreiben, hier: <div id="ergebnis>...</div>)
so eine Ausgabe macht hier aber wenig Sinn ... da ja "nur" geloggt" werden soll
ist aber nützlich für z.B. bei Votes abgeben und Ergebnis gleich anzeigen
... aber das ist ein anderes Thema
Beitrag zuletzt geändert: 4.6.2012 15:38:32 von wzone -
Erstmal vielen dank wzone an die ausführliche Antwort, trotzdem habe ich nicht verstanden wie
onclick="logClick(this.id)
Die id an log_click.php übergeben kann.
function logClick(link_id) { var logscript = 'log_click.php'; var milli_sec = new Date().valueOf();
könntest du das noch einmal erläutern?
Danke im vorraus -
nathanaelus schrieb:
Der nögite Code, der etwas an den Server schickt:
trotzdem habe ich nicht verstanden wie
onclick="logClick(this.id)
Die id an log_click.php übergeben kann.var logscript = 'log_click.php'; var milli_sec = new Date().valueOf(); if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); else xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("GET",logscript+"?id="+link_id+"&ms="+milli_sec,true); xmlhttp.send();
Erklärung:if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); else xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
erstellst du ein XMLHttpRequest-Objekt, mit dem Anfragen an den Server gestellt werden können.
xmlhttp.open("GET",logscript+"?id="+link_id+"&ms="+milli_sec,true);
damit setzt du die URL die aufgerufen werden soll
xmlhttp.send();
hiermit wird die Anfrage an den Server gesendet und die Seite heruntergeladen.
Das ganze nennt sich AJAX... -
Okay danke soweit :)
Dann werde ich mich erstmal über ajax informieren bis ich weiter mache weil ich bisher damit 0 zu tun hatte -
mit
... onclick="logClick(this.id)" ....
übergibst Du die aktuelle id an die Funktion
Du kannst aber auch direkt einen String (eine ID) übergeben
... onclick="logClick('ich werde übergeben, ob string oder zahl')" ...
was da übergeben wird, kommt in der Funktion als Variable link_id an
und nach senden der Anfrage kommt es in log_click.php als $_GET['id'] an
ebenso die anderen Parameter aus dem GET-String
In der JS Funktion wird dann ein HTTP-GET-Request erzeugt (AJAX)
und die übergebene Variable (link_id) sowie timestamp, etc. wird im GET-String eingefügt
mit
var logscript = 'log_click.php';
definierst Du einfach den Dateiname (evtl. mit Pfad)
... also die Datei, an welche die GET Anfrage gesendet werden soll
das:
xmlhttp.open("GET",logscript+"?id="+link_id+"&ms="+milli_sec,true);
wird (durch Austausch der Variablen durch Klartext) quasi zu
xmlhttp.open("GET","log_click.php?id=banner_123&ms=1234567890",true);
und durch die Zeile:
xmlhttp.send();
passiert dann der eigentliche Aufruf (die URL mit GET Parameter senden)
dann passiert bei der log_click.php genau das gleiche, wass bei Klick auf einen Link passieren würde
<a href="log_click.php?id=banner_123&ms=1234567890">KLICK MICH</a>
halt eine GET-Anfrage
:grins: ... hackyourlife war schneller :) .. naja doppelt hält besser :)
Beitrag zuletzt geändert: 4.6.2012 16:28:33 von wzone -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage