Klaus-Günther: PHP session vs. HTML input

Hallo liebes Forum,
habe eine Anwendung die per <input type="hidden" ...> Werte per Formular an die nächste Seite übergibt.

Nun bin ich auf PHP-Sessions gestoßen. Dort kann man ganz einfach diese Werte in eine Session abspeichern und dann von jeder Seite darauf zugreifen. Dann bräuchte man die gefühlten 100 hidden-Felder im Formular nicht mehr.

Allerdings hab ich da noch eine grundlegende Frage zu:
Mit den übergebenen Werten arbeite ich natürlich weiter. Das geschieht per JavaScript. Wenn ich nun das JS in separate Dateien auslagere, kann ich dann auf die Session-Werte zugreifen? So wie ich das sehe, muss man diese dann erst wieder in HTML-Elemente speichern (z.B.: <input type="hidden" id="a" value="<?php echo $_SESSION['abc'] ?>">) um per JS darauf zugreifen zu können. Dann bringen mir die Sessions aber nix...

Hoffe Ihr könnt mir helfen.

Klaus-Günther

  1. Hi!

    Wenn ich nun das JS in separate Dateien auslagere, kann ich dann auf die Session-Werte zugreifen?

    Nicht direkt, aber ...

    So wie ich das sehe, muss man diese dann erst wieder in HTML-Elemente speichern (z.B.: <input type="hidden" id="a" value="<?php echo $_SESSION['abc'] ?>">) um per JS darauf zugreifen zu können. Dann bringen mir die Sessions aber nix...

    ... zum einen kannst du direkt Javascript-Variablen mit den Werten erzeugen, zum anderen musst du den Kontextwechsel (Artikel-Preview-Version) beachten - nicht nur bei HTML und bei Javascript sondern generell.

    Den feststehenden Javascript-Code kannst du ja auslagern, die Variablen würde ich im HTML-Dokument anlegen, das du sowieso per PHP erzeugst.

    Lo!

    1. Den feststehenden Javascript-Code kannst du ja auslagern, die Variablen würde ich im HTML-Dokument anlegen, das du sowieso per PHP erzeugst.

      Also sozusagen globale JS-Variablen in der php-Datei anlegen und dann in den js-Dateien darauf zugreifen?

      Klaus

      1. Hi!

        Den feststehenden Javascript-Code kannst du ja auslagern, die Variablen würde ich im HTML-Dokument anlegen, das du sowieso per PHP erzeugst.
        Also sozusagen globale JS-Variablen in der php-Datei anlegen und dann in den js-Dateien darauf zugreifen?

        Ja, sowas in der Art. Das kommt natürlich auf deine Daten an, ob das in Einzelvariablen ideal ist oder ob sich ein Array oder Objekt eher anbietet.

        Lo!

  2. Hello,

    Nun bin ich auf PHP-Sessions gestoßen. Dort kann man ganz einfach diese Werte in eine Session abspeichern und dann von jeder Seite darauf zugreifen. Dann bräuchte man die gefühlten 100 hidden-Felder im Formular nicht mehr.

    Du bräuchtest auch nur ein einziges Hidden-Element, wenn Du innerhalb des Dokumentes am Client nicht auf die Werte zugreifen musst.

    Dazu packst Du im einen PHP-Script alle Werte in ein Array, serialierst das mit serialize(), codierst es mit bas64_encode(), damit keine HTML-schädlichen Zeichen mehr vorhanden sind und schreibst es ins Element.

    Im nächsten Script decodierst Du mit base64_decode() und stellst das Array mit unserialize() wieder her. Schon kannst Du wieder auf die Werte zugreifen.

    Session ist natürlich intelligenter, aber eben nicht immer möglich...

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de