Heim  >  Artikel  >  Backend-Entwicklung  >  [php] serialize, unserialize the session data in PHP

[php] serialize, unserialize the session data in PHP

WBOY
WBOYOriginal
2016-06-23 14:35:371172Durchsuche

As we know, in PHP, we can use session_encode() and session_decode() to encode/decode the session data, but, if you have tried these two 

functionality, you will see the they are not going as you think. So here, i find these two functionality which will help you to do that.

 

     /* *
     * serialize session
     * 
     * @param array $data
     * @param boolean $safe
     * @return string 
      */
     function serialize_session( $array,  $safe =  true)
    {
         //  the session is passed as refernece, even if you dont want it to
         if ( $safe)
        {
             $array =  unserialize( serialize( $array));
        }

         $raw = '';
         $line = 0;
         $keys =  array_keys( $array);
         foreach ( $keys  as  $key)
        {
             $value =  $array[ $key];
             $line++;
             $raw .=  $key . '|';
             if ( is_array( $value) &&  isset( $value['huge_recursion_blocker_we_hope']))
            {
                 $raw .= 'R:' .  $value['huge_recursion_blocker_we_hope'] . ';';
            }
             else
            {
                 $raw .=  serialize( $value);
            }
             $array[ $key] =  Array('huge_recursion_blocker_we_hope' =>  $line);
        }

         return  $raw;
    }
    
     /* *
     * unserialize session
     * 
     * @param string $data
     * @return array 
      */
     function unserialize_session( $data)
    {
         $vars =  preg_split('/([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff^|]*)\|/',  $data, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
         for ( $i = 0;  $vars[ $i];  $i++)
        {
             $result[ $vars[ $i++]] =  unserialize( $vars[ $i]);
        }
         return  $result;
    }

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:php网站及php手册Nächster Artikel:php expection and how to find php errors