博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[php] serialize, unserialize the session data in PHP
阅读量:5834 次
发布时间:2019-06-18

本文共 1281 字,大约阅读时间需要 4 分钟。

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

 

转载地址:http://xxucx.baihongyu.com/

你可能感兴趣的文章
说说框架的数据库迁移功能
查看>>
《Spark快速大数据分析》—— 第七章 在集群上运行Spark
查看>>
【MongoDB】6.关于MongoDB存储文件的 命令执行+代码执行
查看>>
第 11 章 LevelDB
查看>>
腾讯云服务器 安装监控组件
查看>>
批量Excel数据导入Oracle数据库
查看>>
驱动蜂鸣器的实验
查看>>
正则表达式/i,/g,/ig,/gi,/m的含义
查看>>
Linux目录结构
查看>>
Appium入门示例(Java)
查看>>
2.13. Spring boot with MySQL
查看>>
5.13. Spring boot with MySQL
查看>>
netty中的ChannelHandler和ChannelPipeline
查看>>
【策略】一致性Hash算法(Hash环)的java代码实现
查看>>
漂亮的提示框SweetAlert使用教程
查看>>
C/C++字节序(大端/小端)判断
查看>>
iOS开发技巧 - 使用和定制开关控件(UISwitch)
查看>>
贵阳大数据交易所:先行先试“掘金”数据!
查看>>
真正统治世界的十大算法
查看>>
分享一种需求评审的方案
查看>>