如何使用PHP在cookie中存储数据?

时间:2013-01-02 08:17:13

标签: php cookies

我是PHP的新手,并且对cookie没有太多了解。

似乎我必须将我的数据存储在Cookie中,因为我只是暂时需要这些数据。我已经阅读了一些文章并尝试了一些但是我得到了空白的结果。

这是我的代码:

<?php
if (isset($_COOKIE['vaccine'])) {
setcookie('vaccine',$vaccine);
foreach ($_COOKIE[$vaccine] as $vaccine){ ?>

<div class="control-group">
<label class="control-label">
<?php echo '&nbsp'.'<a href="javascript:void(0);"  rel="tooltip"    
 title="Delete" onclick="delete_vaccination('.$vaccine->vaccination_record_id.');"><i class="icon-minus-sign"></i></a>'.'';?><?php echo $vaccine->vaccination_record_brand;?>

</label>
</div>

<?php }} ?>

2 个答案:

答案 0 :(得分:2)

您可以(应该?)使用会话。 Cookie不是临时的,它们存储在客户端的计算机上。会话是暂时的,他们一直活着,直到你摧毁他们。

此外,您的PHP中存在一些错误(在cookie处理中没有那么多):$_COOKIE[$vaccine]将取消引用$vaccine$_COOKIE数组。由于$vaccine似乎是一个数组,因此您正在查看$_COOKIE["Array"]。你会想要解决它:

foreach ($_COOKIE["vaccine"] as $vaccine)

此外,当您将对象放入Cookie时,在设置或获取Cookie之前,您必须serialize/unserialize

// fetch the vaccines somewhere first
setcookie('vaccine',serialize($vaccines));

然后,最后,为什么在设置cookie时设置cookie?你应该在设置时阅读它。

完整代码:

<?php
if (isset($_COOKIE['vaccine'])) {
   $vaccines = unserialize($_COOKIE['vaccine']);
   foreach ($vaccines as $vaccine){ ?>

      <div class="control-group">
      <label class="control-label">
      <?php echo '&nbsp'.'<a href="javascript:void(0);"  rel="tooltip"    
          title="Delete" onclick="delete_vaccination('.$vaccine->vaccination_record_id.');">
          <i class="icon-minus-sign"></i></a>'.'';?>
          <?php echo $vaccine->vaccination_record_brand;?>

      </label>
      </div>

<?php }} ?>

答案 1 :(得分:1)

如果这是您的整个代码,那么进入$疫苗的数据在哪里?您似乎将该Cookie设置为空。

然后还有代码错误; foreach应该有$ _COOKIE ['疫苗']而不是$ _COOKIE [$疫苗]。但是,请参阅下面有关cookie和数组的评论。

此外,您无法将PHP数组存储到cookie中。您必须在将数组存储在cookie中时序列化数组,并在将cookie返回时将其反序列化为PHP数组。要么是这样,要么看看PHP手册中的例子#3 - http://php.net/manual/en/function.setcookie.php关于如何处理cookie中的数组。要小心,如果你使用这种方式,使用数组cookie,那么设置了很多cookie。这可能是个问题。所以你可能想要考虑序列化。

序列化的一个实现在PHP手册本身的setcookie条目中给出。请参阅上面给出的手册页中的'cwillard at fastmail dot fm'的评论。

您设置的Cookie也只能在下一页加载时访问。即使你把数据填入$ vaccine,你第一次看到空白。在页面重新加载时你应该看到wha