Dynamischer Zugriff auf Session-Variable



  • Hallo zusammen,

    ich braeuchte mal wieder eine gute idee. diesmal geht es um session-variablen, auf die ich dynamisch zugreifen will.

    beispiel:

    $_SESSION['foo']['bar'] = 'z';
    $_SESSION['foo']['z'] = 'bar';
    $_SESSION['foo'] = 'bar';
    $_SESSION['foo']['z']['x'] = 'bar';
    
    unsetSessionVar('foo','bar');
    

    ich hoffe das ist verstaendlich, mir fehlt der inhalt der funktion zum loeschen unsetten der session variable.

    jemand ne idee?

    danke.

    gruss msp



  • am besten fängst du nochmal von vorne an 😮


  • Mod

    Nein, es ist leider nicht klar was du meinst. Aber session_unset ist sowieso falsch.

    Um _SESSION['foo']['bar'] zu löschen, verwendet man unset(_SESSION['foo']['bar']);



  • Shade Of Mine schrieb:

    Nein, es ist leider nicht klar was du meinst.

    und das wo ich eh immer wörter des einfachen mannes verwende... ich kann es ihm ja schlecht in babysprache mit wadde hadde dudde da beibringen 😕



  • Hallo zusammen,

    vielleicht habe ich mich nicht richtig ausgedrueckt, mag sein. ich versuchs noch einmal:

    ich habe Session-Variablen, die dynamisch angelegt werden. Diese werden aus einem POST-Array erzeugt und werden später mit einem Schleifendurchlauf gespeichert. Nun gibt es verschiedene Tiefen des Session-Array

    $_SESSION['foo']['bar'] = 'z';
    $_SESSION['foo']['z'] = 'bar';
    $_SESSION['foo'] = 'bar';
    $_SESSION['foo']['z']['x'] = 'bar';
    
    unsetSessionVar('foo','bar');
    

    Mit der Funktion unsetSessionVar moechte ich nur die Sessionvariable $_SESSION['foo']['bar'] loeschen, keine andere.
    Die gleiche Funktion soll aber auch so aufgerufen werden koennen (unsetSessionVar('foo','z','x');) und nur $_SESSION['foo']['z']['x'] loeschen.

    Ich hoffe das ist etwas verstaendlicher.

    Danke.

    Gruss
    msp



  • http://php.net/func_get_args

    obwohl sich bei sowas die xpath-Schreibweise etwas besser anbietet:

    unsetSessionVar('foo/z/x');
    


  • Hallo,

    wie ich diese Funktion schreibe is mir schon klar, also den zugriff auf die Parameter. Nur der dynamische Zugriff auf die Sessionvariable is mir noch nicht klar. Eigentlich weis ich ja nicht wieviele Ebenen in meiner Session vorhanden sind, also Felddimensionen. Aber ich denke man kann das auch in ein switch schreiben und sagen wir mal 4 oder 5 Dimensionen zulassen, dann is gut und es funktioniert.

    Danke fuer die Mitarbeit.

    Gruss
    msp



  • nene, geht einfacher

    ungetesteter code (irgendwas musst du ja auch noch machen)

    function unsetSessionVar($xpath, $var = NULL) {
        $parts = explode('/', $xpath);
    
        if ($var === NULL)
            $var = $_SESSION;
    
        foreach ($parts AS $part) {
             if (!isset($var[$part]))
                 //error
             $var = $var[$part];
        }
    
        unset($var);
    }
    

    so in etwa



  • Wenn Du eine solche Frage stellst, dann fange doch erst mal damit an, dass Du sagst, dass es sich um PHP handelt. Man kann es zwar erkennen, da Du das PHP-Tag verwendest, aber es hilft beim Verständnis der Frage. Es geht nicht um Babysprache sondern um eine klare Formulierung.



  • Gibt es nicht eine maximale Anzahl an Cookies pro Domain, nach der dann alte Cookies überschrieben werden ?


  • Mod

    RonnieIshorst schrieb:

    Gibt es nicht eine maximale Anzahl an Cookies pro Domain, nach der dann alte Cookies überschrieben werden ?

    Nein.
    Es gibt zwar ein real World Limit (20) aber bestehende Cookies werden nicht ueberschrieben.

    Das ganze ist natuerlich nur rein theoretisch, denn wer soviele Cookies verwendet, hat was grundlegendes nicht verstanden.

    Worauf willst du mit deinem Beitrag hinaus?



  • RonnieIshorst schrieb:

    Gibt es nicht eine maximale Anzahl an Cookies pro Domain, nach der dann alte Cookies überschrieben werden ?

    Ja.


Anmelden zum Antworten