SELFPHP Newsletter mit Verlosung, Extra-Tipp als fertiges PHP Skript, Code-Snippets und vieles mehr...
Verpasst nicht den Newsletter von SELFPHP mit speziellen Extra-Tipps (im letzten Newsletter: Download-Geschwindigkeit mit PHP drosseln), Code-Snippets, wichtige Informationen rund um das Thema PHP und vieles mehr. Weiterhin gibt es im jedem Newsletter immer eine Verlosung mit tollen Preisen, die von unseren Sponsoren gestiftet werden. Im aktuellen Newsletter stellt Microsoft für den Newsletter folgende Preise zur Verfügung.
Unter allen Teilnehmern werden 10 Microsoft Press Fachbüchern verlost:
5x Spieleprogrammierung mit dem XNA Framework
5x Cloud Computing mit der Windows Azure Plattform
AW: erkennen ob user einen Werbeblocker aktiviert hat, oder nicht
Also ich kenne keine Möglichkeit. Aber Du könntest es so machen, dass Du eine Meldung schreibst á la "Du hast einen Werbeblocker aktiviert!" und per CSS "position:absolute; top:xxx;left:xxx" ect. die Werbung über die Meldung plazierst. Die Meldung wird so nur dann angezeigt, wenn die Werbung blockiert ist.
AW: erkennen ob user einen Werbeblocker aktiviert hat, oder nicht
also bei mir nicht....
sobald ich adblock plus deaktiviere kommt die meldung
"Da OTR-files.de zu 50% durch Werbung
finanziert wird, bitten wir Dich Deinen
Werbeblocker auszuschalten!" nicht mehr
AW: erkennen ob user einen Werbeblocker aktiviert hat, oder nicht
Ich geh mal davon aus, dass in der von Adblock blockierten Werbung ein JavaScript läuft, welche werbeblocker auf false schaltet. Wenn die Werbung nicht angezeigt wird, kann die Variable werbeblocker logischerweise nicht umgeschaltet werden.
Dadurch erhält man die Meldung, man solle ihn deaktivieren.
AW: erkennen ob user einen Werbeblocker aktiviert hat, oder nicht
Ich weiß nicht, genau, worauf diese Werbeblocker anspringen, aber man könnte theoretisch ein Bild machen, das bei aktiviertem Werbeblocker auch nicht angezeigt wird. Dieses Bild bindet man dann einfach mit folgendem Code ein (also im HTML dann <img src="./blablubb.php">) und formatiert es mit CSS so, dass man es nicht bemerkt.
Das mit der Session müsste klappen (auch wenn es nicht mehr das eigentlich Skript ist), solange die Skripts auf dem gleichen Server sind.
Bei allen folgenden Seiten kann man dann überprüfen, ob $_SESSION['werbeblocker']===FALSE ist und entsprechende Ausgaben produzieren.
Prinzipiell müsste das funktionieren, man bräuchte nur ein Bild, auf das Werbeblocker anspringen :D
AW: erkennen ob user einen Werbeblocker aktiviert hat, oder nicht
Zitat:
Zitat von Area51
Ich geh mal davon aus, dass in der von Adblock blockierten Werbung ein JavaScript läuft, welche werbeblocker auf false schaltet. Wenn die Werbung nicht angezeigt wird, kann die Variable werbeblocker logischerweise nicht umgeschaltet werden.
Dadurch erhält man die Meldung, man solle ihn deaktivieren.
So ist zumindest meine Theorie.
das ist denke ich sehr wahrscheinlich
weil ich kein javascript gefunden hab, welches die funktion werbeblocker definiert
die muss also irgendwo anders definiert werden
Zitat:
Ich weiß nicht, genau, worauf diese Werbeblocker anspringen, aber man könnte theoretisch ein Bild machen, das bei aktiviertem Werbeblocker auch nicht angezeigt wird.
also ich hab mir mal die Filterliste von adblock plus angesehen und festgestellt, dass wenn die werbung im Order "bannerad" liegt, geblockt wird
Zitat:
Dieses Bild bindet man dann einfach mit folgendem Code ein (also im HTML dann <img src="./blablubb.php">) und formatiert es mit CSS so, dass man es nicht bemerkt.
und wie kann ich feststellen, ob das Bild angezeigt wird oder nicht?
AW: erkennen ob user einen Werbeblocker aktiviert hat, oder nicht
Zitat:
Zitat von JuliusCaesar
und wie kann ich feststellen, ob das Bild angezeigt wird oder nicht?
Ich gehe davon aus, dass Adblocker die Werbung gar nicht erst laden. Falls sie die Werbung jedoch laden, aber nicht anzeigen, hat man einerseits Pech, weil man mit meiner Methode nicht weiter kommt, andererseits Glück, wenn man für die Werbung per View und nicht per Klick bezahlt wird :D
EDITH sagte um kurz vor 19 Uhr: So, ich habe gerade erfolgreiche Tests abgeschlossen :-) Das Skript (wie oben, nur dass ich noch einen session_start(); an den Anfang gesetzt habe) heißt showads.php und liegt im Ordner "adverts". Damit erkennt Adblock Plus es ziemlich gut :D D.h., dass das Bild bei aktiviertem Werbeblocker nicht angezeigt wird und beim zweiten Aufruf der Seite wird eine Nachricht angezeigt, dass ein Werbeblocker benutzt wird. Für weitere Verwendung schreib ich hier einfach mal den Code der beiden Dateien rein :-)
PHP-Code:
<?php //./werbetest.php session_start(); if($_SESSION['werbeblocker']===TRUE) $werbeblocker = TRUE; $_SESSION['werbeblocker'] = TRUE; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <title>Werbetest</title> </head> <body> <p><?php if($werbeblocker===TRUE) echo "Hier sollte eigentlich das stehen, was meine Website finanziert... Jetzt muss ich wohl pleite gehen :-("; ?><img src="./adverts/showads.php" alt="Wärbunt"></p> </body> </html>
PS: Das Bild (bei mir "werbunt.png") kann IRGENDWAS sein... Theoretisch auch nur ein einzelner Pixel. Evtl. geht es auch, dass überhaupt nichts ausgegeben wird, aber dann wäre es streng genommen kein valides HTML mehr; ich weiß nicht, ob das irgendwie Probleme bereiten kann...
AW: erkennen ob user einen Werbeblocker aktiviert hat, oder nicht
Ok, habe mir die Seite nochmal etwas genauer angeschaut und bisserl rumexperimentiert...
Mein Ergebnis ist folgendes:
Wenn eine Variable nicht initialisiert wird (z.b. so: var werbeblocker = true;) ergibt bei einer IF-Abfrage (z.b. if(werbeblocker) ) grundsätzlich false aus.
So, hier nun die Lösung wie sie auf "otr-files.de" eingesetzt wird:
Mitten im Quelltext findet sich folgender Scriptaufruf:
Der Inhalt der Datei "ad.js ist nur eine Zeile: var werbeblocker = true;
Kurz danach kommt dieser Scriptblock:
HTML-Code:
<script type="text/javascript">
try {
if (!werbeblocker) {
zeigemeldung = true;
} else {
zeigemeldung = false;
}
} catch(e) {
zeigemeldung = true;
}
if (zeigemeldung) {
document.write("<h1><hinweis>Da OTR-files.de <b>zu 50% </b> durch Werbung <br />finanziert wird, bitten wir Dich Deinen <br />Werbeblocker auszuschalten!</hinweis></h1>");
}
</script>
So, die Verarbeitung ist wie folgt (damit wiederufe ich gleichzeit meinen ersten Beitrag, wo ich meinte das bei mir auch ohne Werbeblocker die Meldung angezeigt wird.):
Werbeblocker wie z.b. die von mir eingesetzte Firefox-Erweiterung "AdBlockPlus" scannen die Webseite nach Scriptblöcken, Bildern usw. usw.. Bei diesem Scannvorgang wird geprüft ob in den URLs, den Pfadangaben oder den Dateinamen Schlüsselwörter wie z.B. "ad", "adserver", "click" usw. vorkommen. Ist dies der Fall, so wird das entsprechende Script nicht ausgeführt, bzw. das Bild oder was auch immer nicht angezeigt.
Wird also das Script wegen dem Adfilter nicht ausgeführt, so wird logischerweise die Variable "werbeblocker" auch nicht mit "true" initialisiert und bleibt somit "false".
So, hier kommt nun der zweite Scriptblock zum Einsatz, dieser prüft ja ob die Variable "werbeblocker" "true" oder "false" ist. Im Falle des nicht ausgeführten ersten Scripts ist somit der Wert "false", d.h. "zeigemeldung" wird auf "true" gesetzt und der entsprechende Hinweistext wird angezeigt.
FAZIT:
Also wenn du nun prüfen willst ob ein Werbeblocker aktiv ist, lege einfach in deinem Webverzeichnis eine Unterordnerstruktur an wie z.b. "/banner/ads/adserver/click/" in dem letzten Unterordner machste eine JS-Datei namens "ad.js" rein die folgende Zeile enthält: "var werbeblocker = true;" (ohne Anführungsstriche).
Dann baust in deiner HTML-Datei die obigen zwei Scriptblöcke ein (aufpassen dass die URL und Pfadangaben bei dem ersten Script mit deinen Angaben übereinstimmen und beim zweiten Scriptblock dein eigener Hinweistext definiert ist) und schon hast du deine Prüfung :)
Die Moral von der Geschichte:
Wer ein bisschen spielt kommt auch auf die Lösung :)