我收到了这段代码:
if( empty ($cache[$id]) ) {
$arr[$id] = @TIMENOW;
setcookie('id', cArr($arr, 'set'), -1, @PATH);
} else {
$cache[$id] = @TIMENOW;
setcookie('id', cArr($cache, 'set'), -1, @PATH);
}
它只向cookie
添加一个键,如果我要转到另一个线程,它将重置数组,并且不会添加更多键。我的意思是,如果用户使用id
1进入线程,则if( empty ($cache[1]) )
正在添加1,而不是更新现有值,如果用户现在转到ID为5的线程,它将做同样的事情,if( empty ($cache[5]) )
为空,然后它会将ID为5的密钥添加到数组中,这样我现在就拥有两个密钥:1和5。
希望你明白了。如果你不这样做,请随意问你想要什么,我会回复你所有的问题。
答案 0 :(得分:2)
了解您在cArr()
中所做的工作会很有帮助。但如果没有它,这将为用户访问的每个新主题添加到您的cookie中。
//get previous values
$id = $_GET['thread_id'];
$cache = array_key_exists('id', $_COOKIE) ? unserialize($_COOKIE['id']) : array();
//add to $cache
$cache[$id] = TIMENOW;
setcookie('id', serialize(cArr($cache, 'set')), -1, PATH);
警告:但请记住,只需设置一个Cookie,就可以利用您的网络服务器。因此,最好不要使用searialize
和unserialize
在Cookie中存储简单的静态值。