Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Layer nur für Nichtmitglieder

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
domainsnake
PostRank 6
PostRank 6
Beiträge: 415
Registriert: 04.11.2006, 16:50

Beitrag von domainsnake » 05.12.2009, 02:55

Hi all,
aktuell hab ich ein kleines Problem mit dem selbst programmierten Layer auf meiner Seite. Ich hoffe ihr könnt mir da weiterhelfen. Bin allerdings net selber der Programmierer aber ich geb die Frage mal weiter.

Also der Layer funxt super. Jetzt wollte ich das so haben, daß nur die User, welche meist nicht lange auf der Seite bleiben den Layer zu Gesicht bekommen. Die Mitglieder sollen von Werbung verschont bleiben. Der Programmierer hat auch schon mehrere Stunden am Problem gesessen aber laut ihm wird immer die PHPSESSID nach schließen des Browsers komplett gelöscht. Alles andere soll schon vorbereitet sein, nur das Löschen des Cookie funkt dazwischen.

Weiß jemand ne Lösung oder hat nen Codeschnipsel, wo das funktioniert? :idea: Gern auch per PM.

Wär über Hilfe sehr dankbar. :)
Grüßle
Marco

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 05.12.2009, 11:13

domainsnake hat geschrieben:Jetzt wollte ich das so haben, daß nur die User, welche meist nicht lange auf der Seite bleiben den Layer zu Gesicht bekommen. Die Mitglieder sollen von Werbung verschont bleiben. Der Programmierer hat auch schon mehrere Stunden am Problem gesessen aber laut ihm wird immer die PHPSESSID nach schließen des Browsers komplett gelöscht.
Das haben Sitzungscookies so an sich und lässt sich zwar leicht ändern, aber du solltest erstmal klären, was das mit deiner Werbung zu tun hat.

domainsnake
PostRank 6
PostRank 6
Beiträge: 415
Registriert: 04.11.2006, 16:50

Beitrag von domainsnake » 05.12.2009, 16:03

Äh, versteh die Antwort irgendwie nicht so richtig. Also letztendlich geht es darum die Mitglieder vor zuviel Werbung, in dem Fall dem Layer, zu verschonen. Mit den Sitzungscookies soll das Problem gelöst werden. Wenn sich jemand anmeldet, dann wird das irgendwie gespeichert und auf 1 Jahr gesetzt. ( so wie ich den Programmierer verstanden hab) Allerdings wird die PHPSESSID nach schließen des Browsers immer sofort gelöscht und er weiß net wie er das verhindern kann.

Hab hier schon oft gehört das viele das Problem gelöst haben das nur Nichtmitglieder Layerwerbung zu Gesicht bekommen, nur wie?

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 05.12.2009, 17:58

domainsnake hat geschrieben:Mit den Sitzungscookies soll das Problem gelöst werden. Wenn sich jemand anmeldet, dann wird das irgendwie gespeichert und auf 1 Jahr gesetzt. ( so wie ich den Programmierer verstanden hab) Allerdings wird die PHPSESSID nach schließen des Browsers immer sofort gelöscht und er weiß net wie er das verhindern kann.
Wie er den PHPSESSID-Keks über das Browser-Ende hinaus am Leben erhält, schrieb ich schon oben. Außerdem muss er dafür sorgen, dass auf dem Server die zum Keks gehörenden Sitzungsdaten ein Jahr lang gespeichert bleiben, dafür ist session.gc_maxlifetime zuständig.

Je nachdem, wie du Sitzungen nutzt, solltest du dir aber bewusst sein, dass im Laufe eines Jahres sehr viele Daten auf deinem Server abgelegt werden. Obendrein wird standardmäßig jede Sitzung in einer separaten Datei gespeichert. Hast du zehntausend Besuche im Jahr, hast du nach einem Jahr im schlimmsten Fall zehntausend Dateien in einem einzelnen Verzeichnis angelegt, von denen dann womöglich auch noch ein Großteil Datenmüll ist. Schön ist das nicht, ganz im Gegenteil.

Auch die Lebenszeit von einem Jahr halte ich für übertrieben. Hast du wirklich viele Besucher, die sich ein ganzes Jahr lang nicht für deine Seiten interessieren, d.h. in dieser Zeit nicht ein einziges Mal deine Seiten aufrufen?

Ich will ihm ja nicht zu nahe treten, aber was dein Programmierer da gebastelt hat, scheint mir so gesehen nicht sonderlich durchdacht zu sein. Dass er wegen der Keks-Problematik auch nicht mal eben in die PHP-Anleitung gucken mag (bzw. sich mit Cookies generell nicht auszukennen scheint), sondern lieber Stunden rumprobiert hat, lässt nichts Gutes ahnen, wenn ich das mal so anmerken darf.

Grundsätzlich gibt es für die Funktion zwei Möglichkeiten:
1. Keine Werbung nach Login
Das ist das Gleiche, wie es derzeit hier im Forum mit der Werbung gehandhabt wird. Vor Login erscheint oben ein fürchterliches Blinkewackelwackelflashteil, nach Login ist es weg. Dazu muss lediglich geprüft werden, ob der Benutzer angemeldet ist, exakt so, wie es für alle anderen Funktionen gemacht wird, für die der Benutzer angemeldet sein muss. Das ist der einfachste Weg, er sollte lediglich zwei, drei Zeilen erfordern, denn die gesamte Benutzer-Anmelde-Geschichte ist ja bereits vorhanden.
Nach dem Logout, dem Verfall der Sitzung oder dem Schließen des Browsers kommt die Werbung allerdings wieder, bis zum nächsten Login.

2. Dauerhaft keine Werbung bei bekannten Besuchern
Dazu muss erstmal ein Login stattfinden, quasi Schritt 1. Dann sollte ein zusätzliches Cookie gesetzt werden, unabhängig vom PHPSESSID-Login-Cookie, diesmal mit der gewünschten Lebensdauer von einem Jahr (oder eher deutlich weniger, siehe oben).
Wie man dann serverseitig die Gültigkeitsprüfung der Cookiedaten durchführt (Cookies können vom Benutzer bearbeitet werden, man könnte sich somit ohne Anmeldung Werbefreiheit erschleichen), ist eine Geschichte für sich. Der normale PHP-Session-Mechanismus ist dafür aber aus oben genanntem Grund in jedem Falle IMHO gänzlich ungeeignet.

domainsnake
PostRank 6
PostRank 6
Beiträge: 415
Registriert: 04.11.2006, 16:50

Beitrag von domainsnake » 05.12.2009, 19:07

Oh, danke für die Informationen. Wußte ich alles noch nicht wie das so funktioniert. Das mit den zehntausend Dateien hört sich nicht gut an. Geht dann wohl auch zu lasten der Ladezeit oder? Ich mein, wenn erst so viele Dateien überprüft werden müssen.

Also ich denke auch mal 1 Jahr ist zuviel. Ein Monat tuts auch denk ich oder auch alle 2 Wochen. Wer wirklich häufig auf der Seite ist, dem ist alle 2-4 Wochen auch mal ein Layer zuzumuten. :)

Deine erste Möglichkeit keine Werbung nach Login funktioniert für nen Layer ja nicht so wirklich. Der wird ja immer vor dem Login angezeigt. Könnte man höchstens für nachfolgende Werbung nutzen, also das dann weniger angezeigt wird. Aber mir gehts um den Layer ganz am Anfang.

Das mit dem zusätzlichen Cookie werd ich hingegen mal so weitergeben. Und das es nicht mit dem Standard PHP Session Mechanismus gelöst werden sollte.

Eigentlich ist der Programmierer recht fit, aber ich denke alles kann man auch als Programmierer nicht wissen. Mal sehen, vielleicht hilft ihm sein Lösungsansatz ja weiter. Danke dafür nochmal.

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 05.12.2009, 20:55

domainsnake hat geschrieben:Das mit den zehntausend Dateien hört sich nicht gut an.
Das wäre der schlimmste Fall, wenn du für jeden, der vorbeikommt, erstmal eine Session aufmachst. Wird die Session erst nach Login gestartet, sind es weniger, je nachdem, wie viele angemeldete Besucher du im Verhältnis zu den unangemeldeten hast.
Ich hatte die Zahl nur als gruseliges Beispiel genommen, weil sich eben in dieser Konstellation über ein Jahr ein ganzer Haufen Daten ansammeln könnte.
Also ich denke auch mal 1 Jahr ist zuviel. Ein Monat tuts auch denk ich oder auch alle 2 Wochen. Wer wirklich häufig auf der Seite ist, dem ist alle 2-4 Wochen auch mal ein Layer zuzumuten. :)
Nein, er würde gar kein Layer zu sehen bekommen. Es läuft folgendermaßen: Beim ersten Login am 1.12. bekommt der Besucher sein Anti-Werbe-Cookie mit Verfallsdatum 22.12, also drei Wochen Cookie-Lebenszeit. Nun kommt er schon zwei Wochen später am 14.12. wieder. Cookie ist noch da, er sieht keine Werbung. Bei diesem Besuch wird der Cookie trotzdem wieder gesetzt und hat dann wieder neue drei Wochen Lebenszeit, also bis zum 4.1.
Und so setzt sich das immer fort - solange der Besucher mit seinem Cookie wiederkommt, wird die Lebenszeit immer wieder um drei Wochen verlängert. Er sieht also nie Werbung. Erst, wenn er drei Wochen nicht da war und sein Cookie dementsprechend vom Browser gelöscht wurde, bekommt er wieder Werbung zu sehen.

Deshalb ist das mit dem einen Jahr Lebenszeit auch übertrieben. Nur Besucher, die 364 Tage lang nicht vorbeischauen, haben davon etwas. Wer alle zwei Wochen oder alle zwei Monate wiederkommt, dem nützt das Jahr nichts, ihm reichen zwei Wochen bzw. zwei Monate, weil mit jedem Besuch die Lebenszeit erneut beginnt.
Deine erste Möglichkeit keine Werbung nach Login funktioniert für nen Layer ja nicht so wirklich. Der wird ja immer vor dem Login angezeigt. Könnte man höchstens für nachfolgende Werbung nutzen, also das dann weniger angezeigt wird. Aber mir gehts um den Layer ganz am Anfang.
Da hast du recht, dann sollte der zweite Weg genutzt werden. Die ganze billige Variante sähe so aus:

Nach dem Login:

Code: Alles auswählen

setcookie("antiwerbecookie", "1", time() + 3600 * 24 * 21); // drei Wochen Lebenszeit
Bei jedem Seitenaufruf:

Code: Alles auswählen

if (isset($_COOKIE["antiwerbecookie"]) && (rand(1, 3) == 1)) { // falls Cookie schon gesetzt, dann in einem Drittel aller Aufrufe:
    setcookie("antiwerbecookie", "1", time() + 3600 * 24 * 21); // Cookie bzw. Verfallsdatum neu setzen
}
Vor der Werbeausgabe:

Code: Alles auswählen

if (! isset($_COOKIE["antiwerbecookie"])) { // Kein Anti-Werbe-Cookie gesetzt
    echo "Jetzt kommt ganz viel Werbekram";
}
Nur eben schnell zusammengehackt und, wie weiter oben bereits beschrieben, ist das zwar schnell umzusetzen, aber in dieser Form (nur Prüfung, ob Cookie gesetzt, nicht, ob es gültig ist) in ein, zwei Minuten vom Besucher zu fälschen, indem er in seinem Browser von Hand ein entsprechendes Cookie setzt - das Wissen muss man sich allerdings auch erstmal aneignen, insofern schätze ich die Gefahr eher gering ein.

domainsnake
PostRank 6
PostRank 6
Beiträge: 415
Registriert: 04.11.2006, 16:50

Beitrag von domainsnake » 06.12.2009, 01:00

Hui, danke für die Hilfe, das leuchtet mir alles ein. Bin mal gespannt, ob das funktioniert. Werds mal weitergeben.

Ich glaub auch kaum das sich jemand die Werbefreiheit wirklich erschleichen würde. Dafür ist zuviel Knowhow und Arbeit notwendig. Und selbst wenn es einer machen würde, dann wärs auch egal.

Antworten