Ellen: Checkbox-Werte in Cookies speichern

Hallo,

nach einer langen Suche wende ich mich jetzt an Euch. Mein Problem ist leicht zu erklären, eine Lösung (für mich) schwer zu finden. Also:

Ich habe eine Auswahl mit Checkboxen. Letzten Endes möchte ich nichts anderes, als dass die Auswahl beim nächsten Mal automatisch wieder getroffen wird und der Besucher nicht ein weiteres Mal die Häkchen setzen muss. Damit meine ich:

User kommt auf die Seite, sieht

[ ] Thema 1
[ ] Thema 2
[ ] Thema 3

setzt die Häkchen

[x] Thema 1
[ ] Thema 2
[x] Thema 3

Kommt beim nächsten Mal auf die Seite un da sieht er

[x] Thema 1
[ ] Thema 2
[x] Thema 3

und nicht

[ ] Thema 1
[ ] Thema 2
[ ] Thema 3

es sei denn, er hat seine Cookies gelöscht oder nicht aktiviert.

Ich hoffe, dass das verständlich erklärt war.

Dass das Problem mit Cookies zu lösen ist und welche negativen Dinge dabei miteinspielen, habe ich bei meiner Suche schon gelesen. Dennoch möchte ich das umsetzen.

Mein Problem besteht schon darin, dass ich nicht weiß, ob ich Java Script oder Php (oder beides) benötige. Zum anderen fehlt mir ein Ansatz, sozusagen der erste Schritt. Ich habe mir zwar solche Dinge hier http://tut.php-q.net/de/cookies.html durchgelesen, aber so richtig schlau bin ich aus den ganzen Infos noch nicht geworden.

Für Hilfe wäre ich sehr dankbar!

Danke und liebe Grüße

  1. hi,

    Mein Problem besteht schon darin, dass ich nicht weiß, ob ich Java Script oder Php (oder beides) benötige. Zum anderen fehlt mir ein Ansatz,

    : Was User ankreuzt an Checkboxen muss erstmal zum Server. Das kann mit einem Submit des Formulars erfolgen oder mit Ajax(JavaScript).

    Am Server brauchst Du dann PHP, dort wertest Du den Request aus, das kann GET oder POST sein, je nachdem wie Du das programmierst.

    Dann denke Dir eine Datenstruktur aus, wie Du die übermittelten Werte aus $_GET oder $_POST (Checkboxen checked) in einen Scalar ablegst, das kommt dann in den Cookie als value.

    Diesen Cookie sendest Du in der Response im Header, der Browser speichert den dann lokal ab (oder auch nicht, rechne damit).

    Wenn dann der Benutzer die Seite wieder aufruft, wird der Cookie im Request-Header mitgesendet, dazu wird serverseitig eine Variable gesetzt, die Dein PHP Script auslesen und die Checkboxn entsprechend ankreuzen kann.

    Das ist nicht nur der Ansatz, das ist im Prinzip schon alles ;-)

    Hotti

  2. Hallo,

    set_cookie(), php.

    du speicherst ein array in einem cookie und liest es wieder aus ($_COOKIES);

    Entsprechend baust du dann deine checkboxen oder was auch immer.

    Versuch es doch erstmal mit einem <input name="myCookieVar" type="text" value="<?php echo $_COOKIES["myCookieVar"?>

    ungetesetet. Fehlt natürlich auch noch das Setzen des Cookies.

    Gruß

    jobo

  3. Hallo,

    Ich denke, Du könntest die Cookies auch mit JavaScript setzen.
    Ein guter Anfang zum Lesen wäre diese Seite:
    http://de.selfhtml.org/javascript/beispiele/seitenbesuche.htm
    Auch zahlreiche JavaScript-basierten Style Switcher, die eine
    Zeitlang recht in Mode waren, speichern das bevorzugte Stylesheet
    in einem Cookie (was ja in eine ähnliche Richtung geht, also eine
    nette Bequemlichkeits-Funktion für den Benutzer, aber nichts
    lebenswichtiges.)

    Du kannst auch schon dann, wenn der Benutzer das Kästchen ankreuzt
    bzw. un-ankreuzt (http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onchange@title=onChange), das Cookie setzen. Interaktion mit
    dem Server ist also überhaupt nicht notwendig.

    Aber natürlich setzt das voraus, dass der Benutzer JS aktiviert hat.
    Wenn Du lieb sein willst und auch die Benutzer mit abgeschaltetem JS
    glücklich machen willst, kommst Du nicht um eine serverseitige Lösung
    herum. Und ob Du dann den doppelten Aufand betreiben willst für ein
    "nice to have" feature (also JS + PHP), wage ich zu bezweifeln.
    Darum heisst die Lösung wohl doch eher: PHP (z.B. mit Sessions,
    aber es geht auch ohne). Sobald Du es mit Benutzerregistrierung
    und Datenbanken zu tun hast, brauchst Du sowieso eine Lösung mit
    PHP oder einer vergleichbaren serverseitigen Technologie.

    mfg Thomas

    1. moin,

      herum. Und ob Du dann den doppelten Aufand betreiben willst für ein
      "nice to have" feature (also JS + PHP), wage ich zu bezweifeln.

      Naja. Du weißt nie, was für ein umfangreiches Projekt hinter einer einfachen Frage stecken kann ;-)

      Viele Grüße,
      Horst Klugschweitzer