2010-04-06 4 views
0

J'utilise séance SaveHandler pour maintenir les données de session dans la base de données.Zend_Session: données unserialize session

Exemple session_data colonne de la base de données:

Messenger|a:1:{s:13:"page_messages";a:0:{}}userSession|a:1:{s:7:"referer";s:32:"http://cms.dev/user/profile/view";}Zend_Auth|a:1:{s:7:"storage";O:19:"User_Model_Identity":3:{s:2:"id";s:1:"1";s:8:"username";s:13:"administrator";s:4:"slug";s:13:"administrator";}} 

Je veux supprimer l'objet Zend_Auth de ces données de session.

Comment puis-je désérialiser ces objets et de supprimer l'objet je besoin?

Je soupçonne, que je ne dois pas écrire mon analyseur personnalisé, que Zend_Session a déjà une méthode pour le faire. J'ai essayé différentes combinaisons de unserialize mais il retourne toujours false.

J'utilise autochargeur ZF 1.10.2 et 1.2 Doctrine

Répondre

1

Le code ci-dessous fonctionne, il est pas le mien, mais en substance ce qu'il fait est divisé la chaîne de session à l'aide en dehors du tube comme séparateur , le unserialize les morceaux fendus individuellement.

Le problème est que la construction en fonction unserialize en php ne comprend pas la sérialisation concaténer.

function unserialize_session_data($serialized_string) { 
    $variables = array(); 
    $a = preg_split("/(\w+)\|/", $serialized_string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 
    for($i=0;$i<count($a);$i=$i+2){ 
     $variables[$a[$i]] = unserialize($a[$i+1]); 
    } 
    return($variables); 
} 
+1

Votre code ne fonctionne pas lorsque la valeur contient "|" char: '$ ns = nouveau Zend_Session_Namespace(); $ ns-> foo = 'bar | barre'; ' – Koc

Questions connexes