我想把用户最近浏览的N条记录用数组形式存在COOKIE里,但是下面这代码老是运行不正确,请大家帮忙看看
100分不够,再加100分!!!<?php
session_start();
header('Content-Type: text/html; charset=utf-8');
$historycount = 20;    //保存历史记录数量
function browse_history($id)
{
    global $historycount;    //判断参数$id是否为空或为数字    if(empty($id) || !is_numeric($id)) return;    //判断用户历史记录是否存在    if(!isset($_COOKIE['history']))
    {    
        $history = serialize(array($id));
        setcookie("history",$history);
        return;
    }        $history = @unserialize(array($_COOKIE['history']));    if($history)
    {
        //如果history记录多于系统允许的值,则删除最后一个        if(count($_COOKIE['history']) >= $historycount)
        {
            $tmp = array_pop($history);
        }        array_unshift($history,$id);
        setcookie("history",serialize($history));     //把最新的插在最前面    }
    else
    {
        setcookie("history","",time()-60);
        if (is_array($_COOKIE['history']))
        {
            foreach ($_COOKIE['history'] as $name => $value)
            {
                setcookie("history[$name]","", time()-60);
            }
        }        $history = serialize(array($id));
        setcookie("history",$history);
    }
    
}    // function end/*----------------------下面是测试--------------------------*/
print_r($_COOKIE['history']);
echo '<br /><hr />';    if(isset($_GET['id']))
{
    browse_history($_GET['id']);
    echo '编号为:'.$_GET['id'].'的浏览记录已经存入cookie<br />';    
}
for($i=0;$i<100;$i++)
{
    echo "<a href=\"history.php?id=$i\">product $i</a><br>\r\n";    
}
?>

解决方案 »

  1.   

    $history = @unserialize(array($_COOKIE['history'])); ?????
    ===>
    $history = @unserialize($_COOKIE['history']);另外请注意:cookie的总容量<=2K
      

  2.   

    我整个文件都复制出来了贴在上面了,没有插入任何文件,用检测BOM签名的软件检测过,文档是在editplus utf-8下编写的,我实在想不出哪里错了
      

  3.   

    xuzuning(唠叨) 照你那样的改了还是出错,绝对不会超过2K,就20个数字。