代码:
<?php
session_start();
ob_start();
if (!isset($_COOKIE['pagesize'])){
Setcookie('pagesize', '15', time()+3600*8);
}
$pagesize=$_COOKIE['pagesize'];
?>执行后提示如下:
Notice: Undefined index: pagesize in E:\wamp\www\phpims\index.php on line 7什么原因?请赐教?

解决方案 »

  1.   

    $_COOKIE['pagesize'] 不存在
    你虽然使用了 setcookie向客户端发送了cookie,但在当前的$_COOKIE的值已经确定好了。你需要等到下一次才可以看到这个值存在
      

  2.   

    当页设置cookies,下一页才能使用。
      

  3.   

    如果一定要在当前用的话,建议setcookie后刷新一下页面
      

  4.   

    这里说说cookie的工作原理:当客户访问某个网站时,在PHP中可以使用setcookie函数生成一个cookie,系统经处理把这个cookie发送到客户端并保存在c:\Documents and Settings\用户名\Cookies目录下。cookie是HTTP标头的一部分,因此setcookie函数必须在任何内容送到浏览器之前调用。这种限制与header()函数一样。当客户再次访问该网站时,浏览器会自动把c:\Documents and Settings\用户名\Cookies目录下与该站点对应的cookie发送到服务器,服务器则把从客户端传来的cookie将自动地转化成一个PHP变量。通过$_COOKIE['xxx']读取客户端发来的cookie。所以需要刷新或者进入下一页页面才能读取得到你刚刚设置的cookies
      

  5.   

    <?php
    session_start();
    ob_start();
    if (!isset($_COOKIE['pagesize'])){
       Setcookie('pagesize', '15', time()+3600*8);
       $pagesize=15;
    }
    else{
       $pagesize=$_COOKIE['pagesize'];
    }
    ?>
      

  6.   

    <?php
    session_start();
    ob_start();
    if (!isset($_COOKIE['pagesize'])){
      Setcookie('pagesize', '15', time()+3600*8);
      $pagesize=15;
    }
    else{
      $pagesize=$_COOKIE['pagesize'];
    }
    ?>
      

  7.   

    5,7楼正解,这里的关键不是cookie是不是下一页生效的问题,而是你代码的问题。
    试看:
    <?php
    session_start();
    ob_start();
    if (!isset($_COOKIE['pagesize'])){//初次执行时,未设置cookie,代码块不会执行。
      Setcookie('pagesize', '15', time()+3600*8);
      $pagesize=15;
    }
    //跳过if执行这里,由于没有设置cookie,所以这里的 $_COOKIE['pagesize']是未定义的。
      $pagesize=$_COOKIE['pagesize'];
    ?>正确的代码见5,7楼