php4的session功能评述(二)
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-24
比较模糊的是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); &n |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: PHP个人网站架设连环讲(三)下一篇: PHP个人网站架设连环讲(四)
关于php4的session功能评述(二)的所有评论