<?php
if(empty($_COOKIE['lastVisit'])){
//如果为空为第一次登录
echo "您好,您是第一次登录!";
//记录下首次登录时间
setcookie("lastVisit",date('Y-m-d H:i:s'),time()+30*24*3600);
}else{
echo "您上一次访问时间是".$_COOKIE['lastVisit'];
//更新为这一次登录的时间
setcookie("lastVisit",date('Y-m-d H:i:s'),time()+30*24*3600);
}?>
报错:
您好,您是第一次登录!
Warning: Cannot modify header information - headers already sent by (output started at D:\LAMP\AppServ\www\cookie\lastVisit.php:4) in D:\LAMP\AppServ\www\cookie\lastVisit.php on line 6

解决方案 »

  1.   

    setcookie 前面不能有任何输出,你可以用 ob_start(); 开启缓冲区。
      

  2.   

    这么改一下代码...另外如果是utf-8 编码文档注意不要有B头
    $first = FALSE;
    if (empty($_COOKIE['lastVisit'])) {
        $first = TRUE;
        setcookie("lastVisit", date('Y-m-d H:i:s'), time() + 30 * 24 * 3600);
    } else {
        $first = FALSE;
        setcookie("lastVisit", date('Y-m-d H:i:s'), time() + 30 * 24 * 3600);
    }
    if ($first) {
        echo "您好,您是第一次登录!";
    } else {
        echo "您上一次访问时间是" . $_COOKIE['lastVisit'];
    }
      

  3.   

    在header之前有输出导致的,开启缓冲 ob_start();
      

  4.   

    倒一下次序<?php
        if(empty($_COOKIE['lastVisit'])){
            //如果为空为第一次登录
            //记录下首次登录时间
            setcookie("lastVisit",date('Y-m-d H:i:s'),time()+30*24*3600);
            echo "您好,您是第一次登录!";
        }else{
            echo "您上一次访问时间是".$_COOKIE['lastVisit'];
            //更新为这一次登录的时间
            setcookie("lastVisit",date('Y-m-d H:i:s'),time()+30*24*3600);
        }错误信息已经说的很清楚了
    Warning: Cannot modify header information - headers already sent by (output started at D:\LAMP\AppServ\www\cookie\lastVisit.php:4) in D:\LAMP\AppServ\www\cookie\lastVisit.php on line 6
    在 D:\LAMP\AppServ\www\cookie\lastVisit.php 第 6 行执行 setcookie 时,发现 D:\LAMP\AppServ\www\cookie\lastVisit.php 的第 4 行处有输出