PHP cookie,为属性添加更多值

时间:2014-05-17 23:09:24

标签: php cookies

我正在尝试实现以下功能。当有人阅读文章时,我想添加一个存储文章ID的cookie,以便我可以在另一个页面中使用它。我的问题是,如果用户看到另一篇文章,则会重写cookie,以便删除旧的ID。我想在cookie中保留所见文章的所有内容。

设置cookie

<?php
// Check if cookie exists
if( isset($_COOKIE["read"]) ) {
    $array = unserialize($_COOKIE['read']);

    // Iterate array
    found = False;
    foreach ($array as $i) {
        // Check if doc id already in cookie
        if ($array[$i] == $id) {
            found = True;
        }   
    }
    if (!found) {
        array_push($array, $id);
        setcookie("read", serialize($array), time()+3600);
    }
}

// If cookie does NOT exists
else {
    $array = array();
    array_push($array, $id);
    setcookie("read", serialize($array), time()+3600);
}
?>

阅读cookie以显示文章已被阅读

<?php

while($row = mysqli_fetch_array($result)){
    $id = $row['id'];

    if( isset($_COOKIE["read"]) ) {
        $array = unserialize($_COOKIE['read']);
            // Iterate array
            for ($i = 0; $i < count($array); ++$i) {
                if ($array[$i] == $id) {
                    $read = True;
                }
                else {
                    $read = False;
                }
            }
    }
    else {
        $read = False;
    }

    print "<p>Document ".$row['id']." Title: <b>".$row['title']."</b>";
    if ($read == True) {
        print("*");
    }
    print " <a href=\"detail.php?id=".$row['id']."\">More Info</a></p>";
}

?>

此代码有效,但正如所述覆盖了上一篇文章ID。我想我必须使用一个数组。但我不知道如何继续增加价值。

更新:我尝试serialize但仍然没有结果。我正在尝试查看id是否在unserialized数组中。

2 个答案:

答案 0 :(得分:1)

您想要Arrays in cookies PHP

吗?

序列化数据:

setcookie('cookie', serialize($idS));

然后反序列化数据:

$idS= unserialize($_COOKIE['cookie']);

答案 1 :(得分:0)

尝试将datetime()字符串添加到cookie名称的开头。那样老的人不会被覆盖。类似的东西:

$date_snippet = date('Y-m-d H:i:s'); 
setcookie("{$date_snippet}read", serialize($array), time()+3600);