php4的session功能评述(二)


Posted in PHP onOctober 09, 2006

比较模糊的是session_decode和session_encode:  

bool session_decode(string data);  
session_decode() decodes the session data in data, setting variables  
stored in the session.  

bool session_encode(void);  
session_encode() returns a string with the contents of the current  
sessionencoded within.  

php manual里面好象没有相关的例子。从字面意思来看decode是把用户的串  
解析出来以后set到session里面,encode则是把session的数据“打包”返回  
给用户。这样看来encode的作用可能更大一些,用户register数据到session  
里面以后应该是用encode把数据取出来的,但是encode返回的东西仍需要处理,  
比如:  
session_register("val1");  
$val1 = "abcde"  
session_register("val2");  
$val1 = 1234  
session_register("val3");  
$val1 = 123.45  

那么session_encode返回的东西是:  

val1:s:5:"abcde";val2:i:1234;val3:d:123.45;  

很明显,'s'是string,'i'和'd'是数字,'s'类型的变量需要长度。  
如果你的session id是aaeebbcfd4455ec2c0d5cb590f8fab74,那么这串东西实际  
上是存在/tmp/aaeebbcfd4455ec2c0d5cb590f8fab74文件当中。  
现在需要你自己把这串东西做处理,析出你想要的session data。很奇怪php4  
没提供一个方便的接口实现已register变量的解析... 或者有我没找着。  
先自己写一个了...  
session_data_init取出所有“打包”的session_data  
session_data_get根据变量名取得数据  
用:  
$data = session_data_init( );  
$result = session_data_get($data, "val1");  
就可以把val1的数据取出来。  

<?  
/*  
* get all date registered in the session  
*/  
function session_data_init( ) {  
    $sessionData = session_encode();  
    return $sessionData;  
}  
?>  

<?  
/*  
* extract one variable from enconded session data  
*/  
function session_data_get($data, $name) {  
    $matchStr = $name."|";  
    $matchStart = strpos($data, $matchStr);  
    if ($matchStart == 0) {  
        if (strlen($data) < strlen($matchStr)) return "";  
        $tmpStr = substr($data, 0, strlen($matchStr));  
        if (strcmp($tmpStr, $matchStr) != 0) return "";  
    }  

    $typeStart = $matchStart + strlen($matchStr);  
    $dataType = substr($data, $typeStart, 1);  

    if (strcmp($dataType, "s") == 0) {   /* string */  
        $lenStart = $typeStart + 2;  
        $lenEnd = strpos($data, ":", $lenStart) - 1;  
        $lenLen = $lenEnd - $lenStart + 1;  
        $strLen = substr($data, $lenStart, $lenLen);  

        $strStart = $lenEnd + 3;  
        $strResult = substr($data, $strStart, $strLen);  
        return $strResult;  
    } else if (strcmp($dataType, "i") == 0 ||  
        strcmp($dataType, "d") == 0) { /* number */  
        $numStart = $typeStart + 2;  
        $numEnd = strpos($data, ";", $numStart) - 1;  
        $numLen = numEnd - numStart + 1;  
        $numResult = substr($data, $numStart, $numLen);
        return $numResult;
    } else {
        return "";
    }
}
?>                 

PHP 相关文章推荐
php守护进程 加linux命令nohup实现任务每秒执行一次
Jul 04 PHP
php实现的支持断点续传的文件下载类
Sep 23 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
php压缩和解压缩字符串的方法
Mar 14 PHP
PHP实现的QQ空间g_tk加密算法
Jul 09 PHP
实例讲解php数据访问
May 09 PHP
php基于CodeIgniter实现图片上传、剪切功能
May 14 PHP
thinkPHP的表达式查询用法详解
Sep 14 PHP
PHP的消息通信机制测试实例
Nov 10 PHP
PHP基于回溯算法解决n皇后问题的方法示例
Nov 07 PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 PHP
php伪静态验证码不显示的解决方案
Sep 26 PHP
动态新闻发布的实现及其技巧
Oct 09 #PHP
最简单的PHP程序--记数器
Oct 09 #PHP
用PHP产生动态的影像图
Oct 09 #PHP
在Windows版的PHP中使用ADO
Oct 09 #PHP
PHP4与PHP3中一个不兼容问题的解决方法
Oct 09 #PHP
PHP 高手之路(一)
Oct 09 #PHP
PHP 高手之路(二)
Oct 09 #PHP
You might like
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
javascript修改IMG标签的src问题
2014/03/28 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
浅谈javascript中return语句
2015/07/15 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
详细介绍Python语言中的按位运算符
2013/11/26 Python
python中的set实现不重复的排序原理
2018/01/24 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
Django项目基础配置和基本使用过程解析
2019/11/25 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
自考自我鉴定范文
2013/10/30 职场文书
工商管理专业职业生涯规划
2014/01/01 职场文书
会计电算化学生个人的自我评价
2014/02/08 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
三好学生个人先进事迹材料
2014/05/17 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
2014年超市工作总结
2014/11/19 职场文书
母亲节感言
2015/08/03 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
mysql分表之后如何平滑上线详解
2021/11/01 MySQL
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js
TS 类型收窄教程示例详解
2022/09/23 Javascript