phpbar.de logo

Mailinglisten-Archive

[php] deserialization Session aus Datenbank

[php] deserialization Session aus Datenbank

Stephan info at suppenterrine.de
Di Nov 15 08:56:09 CET 2011


Hallo !
 
Danke für die Info. Auf php.net -> unserialize gibt es in den Kommentaren ein
Lösungsvorschlag,
den ich übernommen habe.
 
-----------------------
function unserializesession( $data ){
    if(  strlen( $data) == 0)
        return array();

    // match all the session keys and offsets
    preg_match_all('/(^|;|\})([a-zA-Z0-9_]+)\|/i', $data, $matchesarray,
PREG_OFFSET_CAPTURE);

    $returnArray = array();

    $lastOffset = null;
    $currentKey = '';
    foreach ( $matchesarray[2] as $value ){
        $offset = $value[1];
        if(!is_null( $lastOffset))
        {
            $valueText = substr($data, $lastOffset, $offset - $lastOffset );
            $returnArray[$currentKey] = unserialize($valueText);
        }
        $currentKey = $value[0];

        $lastOffset = $offset + strlen( $currentKey )+1;
    }

    $valueText = substr($data, $lastOffset );
    $returnArray[$currentKey] = unserialize($valueText);

    return $returnArray;
}
-------------------------------
 
Klappt prima.
 
Mit freundlichen Grüßen
 
Stephan 



Robert Hartung <r.hartung at roberthartung.de> hat am 14. November 2011 um 14:09
geschrieben:

> Du kannst dir auch nen Parser in wenigel Zeilen schreiben da ein regex mM
> nicht die Komplexität handeln kann.
>
> Einfach zeichen für Zeichen abarbeiten.
>
> Sessions sind doch eh temporär wieso also nich einfach umstellen?
>
> Von meinem iPhone gesendet
>
> Am 14.11.2011 um 14:05 schrieb Stephan <info at suppenterrine.de>:
>
> > Hallo !
>> > Danke für die Info. Leider kann ich die Struktur nicht mehr ändern.
> > Ich muss wohl eine eigene Funktion schreiben.
> > Irgend etwas mit einer RegExp.
>> > Gruß Stephan
> >
> >
> >
> > Robert Hartung <r.hartung at roberthartung.de> hat am 14. November 2011 um
> > 10:53
> > geschrieben:
> >
> >> Hallo,
> >>
> >> phpSession verwenden eine andere Funktion als die, die von serialize() bzw.
> >> unserialize() verwendet werden. Daher würde ich dir raten, das entweder
> >> sein
> >> zu lassen, oder die Session Funktionen selber zu schreiben.
> >>
> >> VG
> >> Robert
> >>
> >> -----Ursprüngliche Nachricht-----
> >> Von: php-bounces at phpbar.de [mailto:php-bounces at phpbar.de] Im Auftrag von
> >> Stephan
> >> Gesendet: Montag, 14. November 2011 10:46
> >> An: php at phpbar.de
> >> Betreff: [php] deserialization Session aus Datenbank
> >>
> >>
> >> Hallo !
> >> 
> >> Momentan habe ich ein Problem:
> >> Ich speichere die Session in einer Datenbank.
> >> Bsp.:
> >> 
> >> --------------------------
> >> 
> >>translate|a:4:{s:6:"module";s:5:"admin";s:10:"controller";s:10:"whiteboard"
> >> ;s:6:"action";s:5:"index";s:8:"language";s:2:"de";}
> >> ...
> >> --------------------------
> >> 
> >> Zu Kontrollzwecken will ich mir den Inhalt der Session mit einem
> >> simplen Tool anzeigen lassen.
> >> 
> >> Hat Php wirklich keine geeignete Funktion um den Session Inhalt (siehe
> >> Beispiel)
> >> in ein Array zu wandeln ???
> >> 
> >> Mit freundlichen Grüßen
> >> 
> >> Stephan
> >> --
> >> ** Allgemeine deutschsprachige PHP-Liste: php at phpbar.de **
> >> Informationen: http://www.phpbar.de
> >> http://lists.phpbar.de/mailman/listinfo/php
> >>
> >> -----
> >> eMail ist virenfrei.
> >> Von AVG überprüft - www.avg.de
> >> Version: 10.0.1411 / Virendatenbank: 2092/4015 - Ausgabedatum: 13.11.2011
> >>
> >> --
> >> ** Allgemeine deutschsprachige PHP-Liste: php at phpbar.de **
> >> Informationen: http://www.phpbar.de
> >> http://lists.phpbar.de/mailman/listinfo/php
> >>
> > --
> > ** Allgemeine deutschsprachige PHP-Liste: php at phpbar.de **
> > Informationen: http://www.phpbar.de
> > http://lists.phpbar.de/mailman/listinfo/php
> --
> ** Allgemeine deutschsprachige PHP-Liste: php at phpbar.de **
> Informationen: http://www.phpbar.de
> http://lists.phpbar.de/mailman/listinfo/php
>

php::bar PHP Wiki   -   Listenarchive