我是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 ' '.'<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 }} ?>
答案 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 ' '.'<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