4

我是 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 }} ?>
4

2 回答 2

2

您可以(应该?)为此使用会话。Cookie 不是临时的,它们存储在客户的计算机上。会话是暂时的,它们一直存在,直到您将它们销毁。

此外,您的 PHP 中有一些错误(在 cookie 处理中没有那么多):$_COOKIE[$vaccine]将取消引用数组中的值。似乎是一个数组,您正在查看. 您将希望修复它:$vaccine$_COOKIE$vaccine$_COOKIE["Array"]

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

此外,当您将对象放入 cookie 时,您必须在设置或获取 cookie 之前对其进行序列化/反序列化:

// 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 }} ?>
于 2013-01-02T08:30:57.033 回答
1

如果这是您的全部代码,那么进入 $vaccine 的数据在哪里?您似乎将该 cookie 设置为空。

然后还有代码错误;foreach 应该有 $_COOKIE['vaccine'] 而不是 $_COOKIE[$vaccine]。但请参阅下面有关 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 中,您第一次也会看到空白。在页面重新加载时,您应该看到什么

于 2013-01-02T08:23:17.993 回答