我把上面的改成:
<?php
$a=setcookie("myname","hello");
echo $a;
?>
<html>
<body>
<?
echo $_COOKIE["myname"];
?>
</body>
</html>
上网找到:
cookies must be sent before any output from your script (this is a protocol restriction). This requires that you place calls to this function prior to any output, including <html> and <head> tags as well as any whitespace.

解决方案 »

  1.   

    COOKIE不能在本页调用!!
    比如你在a页面创建,你必须在b页面调用。
    但也可以用下面的方法:
    <?php
    if (!empty($_COOKIE["myname"]))   //如果不为空则证明有此cookie
    echo $_COOKIE["myname"];
    else                              
    {
    setcookie("myname","hello");//否则创建cookie
    echo "<SCRIPT LANGUAGE='JAVASCRIPT'>window.location='".$_SERVER['PHP_SELF']."'</SCRIPT>";//创建完之后重定向到此页面
    }
    ?>类似的还有其他方法
      

  2.   

    而且你没有设定过期时间,关闭页面cookie就失效
      

  3.   

    还有,再setcookie之前,不能有任何输出,包括空格,空行。
      

  4.   

    默认情况下cookie是关闭浏览器进程就失效的吗?谢谢tianxueer(甜雪儿),问题解决.
      

  5.   

    不是,你没设置时间,关闭浏览器就失效。
    要是设置时间,到时间才失效。
    如:
    setcookie("myname","hello",time()+3600);//当前时间加上3600秒
    一个小时后失效