php cookie字典

身居漏室,心系天下

在asp中,我们可我这样写入cookie,如下所示:

<% 
  Response.Cookies("user")("name")="John" 
  Response.Cookies("user")("id")="6"
  Response.Cookies("user")("cip")="192.168.1.66"
%>

这种带有键的cookie,称之为cookie字典,在asp.net也有同样的方法来实现。但在php中,要实现这个就没有那么容易了。为什么要用cookei字典,因为在用户用的浏览器,对于cookie的数目是有限制的,这样的好处是可以减少客户浏览器使用cookie的数量。

php没有直接的方法实现cookie字典,在php中也没有cookie字典这个概念。但有没有办法实现同样的功能呢,答案是有,不过要迂回一下。下面的代码实现了这样的功能。

<?php
    $user=array("name"=>"John",
   "id"=>6,
   "cip" =>"192.168.1.66"
   );
    setrawcookie("user",http_build_query($user));

?>

上面利用http_build_query函数把数组转化为字符串保存到cookie中,读的话,再把各个键值从字符串中拆出来,如下所示:

<?php
  
  function getCookie($cookieStr)
  {
    $temCookieStr="";
    foreach ( $_COOKIE as $site => $link )
    {
      if($site==$cookieStr)
      {
    $temCookieStr=$link;
      }
 
    }
        
    return $temCookieStr;
  }
    
    
    
  function getSubCookie($cookieStr,$subCookieStr)
  {
    if(getCookie($cookieStr)!="")
    {
      $subarr=explode("&",getCookie($cookieStr));
    
      for($i=0;$i<count($subarr);$i++)
      {
                  
        $strTemArr=explode("=",$subarr[$i]);
    if($strTemArr[0]==$subCookieStr)
        {
      return $strTemArr[1];
    }
      }
    }
    return "";
  }


  $name=getSubCookie("user","name"); //读name键
  $id=getSubCookie("user","id"); //读id键
  $cip=getSubCookie("user","cip"); //读cip键

?>

京ICP备14008139号-1