php框架

 首页 > php框架 > ThinkPHP > 在thinkphp3中如何处理cookie数组 - Thinkphp

在thinkphp3中如何处理cookie数组 - Thinkphp

分享到:
【字体:
导读:
          最近玩thinkphp框架时,遇到cookie真让人头晕,网上百度了一下,找到的大概都是thinkphp2 0的资料,说在Think Lib Think Util Cookie class php中,但实际上thinkphp3 0已经将cookie移到ThinkPHP Common functions php中...

在thinkphp3中如何处理cookie数组

最近玩thinkphp框架时,遇到cookie真让人头晕,网上百度了一下,找到的大概都是thinkphp2.0的资料,说在ThinkLibThinkUtilCookie.class.php中,但实际上thinkphp3.0已经将cookie移到ThinkPHPCommonfunctions.php中,用test.php测试了一下cookie函数,发现cookie自动会将数组用json_encode连接再存储,就像手册上说的支持数组存储,但实际上已经变成josn字符串了,还有原来的中文都变成了"UXXXX"之类的字符,很时奇怪,后来查看cookie函数的原代码,发现字符都被转换成json_encode重新编码了,与是解码就找到办法了,但接下来又遇到问题了,用json_decode($_COOKIE["userinfo"])在当前页能得到原数组,但换一个页面后结果居然为“NULL”,用$str=cookie("userinfo")进行读取赋值,却得到了:

  1. object(stdClass)#4 (3) {  
  2. ["name"] => string(6) "张三"  
  3. ["code"] => int(123)  
  4. ["password"] => string(8) "22334455"  

$str得到的是一个类,作为类来处理的.

可我希望得到了是一个数组,于是dump($_COOKIE["userinfo"]),其结果居然"{"name":"\u5f20\u4e09","code":123,"password":"22334455"}" ,也就是都被加了转义字符,数字部分除外,终于找到原因了,解决起来就容易了,用stripslashes($_COOKIE["userinfo"]);//去除转义字符后,再进行一次反向的编码操作json_decode($str,true)就完成了,最后dump()打印结果,得到了正确的数组结果.

  1. array(3) { 
  2.  ["name"] => string(6) "张三"  
  3. ["code"] => int(123)  
  4. ["password"] => string(8) "22334455" 
  5.  } 

实例代码如下:

  1. require_once "ThinkPHP/Common/functions.php"
  2. $user=array
  3. "name"  =>"张三"
  4. "code" =>123, 
  5. "password" =>"22334455"); 
  6. cookie(userinfo,$user,time()+3600); 
  7. var_dump($_COOKIE["userinfo"]); 
  8. //重新读取成数组 
  9. $str=stripslashes($_COOKIE["userinfo"]);//去除转义字符 
  10. $userinfo=json_decode($str,true); 
  11. var_dump($userinfo); 
  12. ?> 
分享到:
thinkphp模板标签:if和eq - Thinkphp
thinkphp模板标签:if和eq 在TP模板语言中,if和eq都可以用于变量的比较,总结以下几点: 1.两个变量的比较: 假设:其中0需要单引号 前者的IF是判断失败的,用后者的(或)则OK,需要注意:name那里是不用加$变量符号的,而value那里要加$变量符号. 2.还有值为空(NULL)的时候: just a test 注意:...
thinkPHP--多数据库交互通信 - Thinkphp
thinkPHP--多数据库交互通信 下面是数据库备份的例子,从一个数据库中取数据复制到另一个数据库中. 1,在config.php中配置实用的数据库信息 //源数据库  "DB_DSN1" => "mysql://用户名:密码@数据库地址:端口/数据库名称",  //目标数据库  "DB_DSN2" => "mysql://用户名:密...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……