我用下面的函数来设置值的数组在PHP一个cookie,但我也需要一个“添加”和“编辑”功能吗? - 我怎么能做到这一点的任何建议。

function build_cookie($var_array) {
  if (is_array($var_array)) {
    foreach ($var_array as $index => $data) {
      $out.= ($data!="") ? $index."=".$data."|" : "";
    }
  }
  return rtrim($out,"|");
}

function break_cookie ($cookie_string) {
  $array=explode("|",$cookie_string);
  foreach ($array as $i=>$stuff) {
    $stuff=explode("=",$stuff);
    $array[$stuff[0]]=$stuff[1];
    unset($array[$i]);
  }
  return $array;
}

用法:

setcookie("mycookies", build_cookie($cookies_array), time()+60*60*24*30);

$cookies_array2 = break_cookie(urldecode($_COOKIE['mycookies']));

    foreach ($cookies_array2 as $k => $v) {
        echo "$k : $v <br />\n";
    }
有帮助吗?

解决方案

有一件事情,你应该考虑使用是连载和的解序列化来编码您的Cookie数据。只是要小心,不过,从我的经验,你必须使用的stripslashes 上的Cookie值你反序列化之前。这样你可以反序列化数据,更改值,重新序列化Cookie,并再次发送。序列化将使其在未来更容易,如果你想存储更复杂的数据类型。

例如:

setcookie("mycookies",serialize($cookies_array),time()+60*60*24*30);

// This won't work until the next page reload, because $_COOKIE['mycookies']
// Will not be set until the headers are sent    
$cookie_data = unserialize(stripslashes($_COOKIE['mycookies']));
$cookie_data['foo'] = 'bar';
setcookie("mycookies",serialize($cookies_array),time()+60*60*24*30);

其他提示

我只是一个id存储在cookie中,并使用一个平面文件(INI,序列化或纯文本)或数据库来存储这些值。事情是 - 饼干是严重的空间有限,您应该添加尽可能少。我最新的一个项目一个我不得不很多的信息存储和,因为我已经获得SSD硬盘,我把阵列和在压缩文件中的对象序列化和饼干我保存的ID,然后的VARIOS部分一些哈希数据才能够做一些快速的验证。 搜索结果 而且,从安全的角度来看,其只是一个ID(和本地数据这样一个不能轻易改变的ID或ID的验证的一些其他形式的哈希值)更安全不是把数据在cookie 。 搜索结果 你有什么特别的理由,数据保存为饼干?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top