<?php
if(!isset($_COOKIE["visittime"])){
setcookie("visittime",date("y-m-d H:m:s"));
echo "欢迎来到本站<br>";
}
else{
setcookie("visittime",date("y-m-d H:m:s"),time()+120);
echo "您上次来到的时间:".$_COOKIE["visittime"];
echo "<br>";
}
echo "现在的时间:".date("y-m-d H:m:s");
?>
若cookie失效或不存在 就进入if块
若cookie存在就进入else块
效果没错,但不明白
在else块里
先执行了
setcookie("visittime",date("y-m-d H:m:s"),time()+120);
这个时候cookie的值不就被当前时间替换一次了吗?
为什么下一句$_COOKIE["visittime"],显示的还是上一次停留在页面的时间
不是应该先echo出$_COOKIE["visittime"]的时间
然后再setcookie的吗?
但代码这样写也是正确的0.0另外每次执行
setcookie("visittime",date("y-m-d H:m:s"),time()+120);
时候,是不是让每次访问页面后
cookie又获得了2分钟的有效期?

解决方案 »

  1.   

    <?php
    //不存在就设置cookie,第一次访问。
    if(!isset($_COOKIE["visittime"])){
        setcookie("visittime",date("y-m-d H:m:s"));
        echo "欢迎来到本站<br>";
    }
    else{
        //每活动一次,就重置访问时间,有效期2分钟。
        setcookie("visittime",date("y-m-d H:m:s"),time()+120);
        echo "您上次来到的时间:".$_COOKIE["visittime"];
        echo "<br>";
    }
    //输出的当前时间
    echo "现在的时间:".date("y-m-d H:m:s");
    ?>
      

  2.   

    $_COOKIE 中保存的是传入的 cookie 变量值
    本次 setcookie 的结果要到下次进入时才能得到是不是让每次访问页面后cookie又获得了2分钟的有效期?
    是的
      

  3.   

    setcookie("visittime",date("y-m-d H:m:s"),time()+120);
    这句话的意思,是将这个cookie植入浏览器,具体其实就是将这个cookie放在返回包的header中[/color[color=#FF0000]],仅此而已这句话并没有改变$_Cookie的值
    $_cookie的值,是从前台的header中得到的,
      

  4.   

    本次写入的cookie要在下一次重新打开时才有用