[php] serialize, unserialize the session data in PHP

WBOY
Release: 2016-06-23 14:35:37
Original
1175 people have browsed it

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;
    }

 

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template