我决定制作一个最近的视图框,允许用户查看他们之前点击过的链接。每当他们点击帖子时,帖子的id就会存储在cookie中并显示在最近的视图框中。
在我的ad.php中,我有一个definerecentview函数,用于存储发布的id(所以我稍后可以在尝试从cookie中获取发布的信息,如标题,价格时调用它)。如何为此创建cookie数组?
**EXAMPLE:** user clicks on ad.php?posting_id='200'
//this is in the ad.php
function definerecentview()
{
$posting_id=$_GET['posting_id'];
//this adds 30 days to the current time
$Month = 2592000 + time();
$i=1;
if (isset($posting_id)){
//lost here
for($i=1,$i< ???,$i++){
setcookie("recentviewitem[$i]", $posting_id, $Month);
}
}
}
function displayrecentviews()
{
echo "<div class='recentviews'>";
echo "Recent Views";
if (isset($_COOKIE['recentviewitem']))
{
foreach ($_COOKIE['recentviewitem'] as $name => $value)
{
echo "$name : $value <br />\n"; //right now just shows the posting_id
}
}
echo "</div>";
}
如何使用for循环或foreach循环来确保每当用户点击广告时,它会在Cookie中生成一个数组?所以它就像..
1. clicks on ad.php?posting_id=200 --- setcookie("recentviewitem[1]",200,$month);
2. clicks on ad.php?posting_id=201 --- setcookie("recentviewitem[2]",201,$month);
3. clicks on ad.php?posting_id=202 --- setcookie("recentviewitem[3]",202,$month);
然后在displayrecentitem函数中,我只是回显了许多cookie被设置了吗?
我完全迷失了创建一个设置cookie的for循环。任何帮助将不胜感激
答案 0 :(得分:3)
不要设置多个cookie - 设置一个包含数组(序列化)的cookie。当您追加到数组时,首先读入现有的cookie,添加数据,然后覆盖它。
// define the new value to add to the cookie
$ad_name = 'name of advert viewed';
// if the cookie exists, read it and unserialize it. If not, create a blank array
if(array_key_exists('recentviews', $_COOKIE)) {
$cookie = $_COOKIE['recentviews'];
$cookie = unserialize($cookie);
} else {
$cookie = array();
}
// add the value to the array and serialize
$cookie[] = $ad_name;
$cookie = serialize($cookie);
// save the cookie
setcookie('recentviews', $cookie, time()+3600);
答案 1 :(得分:1)
您不应该为每个最近的搜索创建一个cookie,而只使用一个cookie。请尝试遵循以下想法:
Cookie中的每个值都必须为
与...分开
唯一的分隔符,您可以使用.
,
;
或|
。例如:200,201,202
当
从cookie中检索数据,
如果存在,请使用
explode(',',CookieName);
,所以你会
最终得到一系列ID。
添加时
数据到你可以做的cookie,
再次,explode(',',CookieName);
到
创建一个ID数组,然后检查是否
新ID不在数组中使用
in_array();
然后添加值
使用array_push();
到数组。
然后使用内爆数组
implode(',',myString);
并写信
myString
到Cookie。
这就是它。