• [php] serialize, unserialize the session data in PHP


    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;
        }
  • 相关阅读:
    图论100题 1~5题
    定价 题解
    题解 编码问题【NOIP1995普及+提高】
    【题解】2020牛客NOIP赛前集训营-普及组(第二场)
    数论学习笔记
    el-tree 点击选中的数据集合
    nginx 本地配置(解决跨域问题)
    原生对象写法,dom调用方法
    手写无缝轮播banner
    element Notification 通知文字换行小技巧
  • 原文地址:https://www.cnblogs.com/davidhhuan/p/2348642.html
Copyright © 2020-2023  润新知