php setcookie不成功(超级头疼的问题)

遇到个奇怪的问题。要崩溃!!!!!!!
我的网站程序在本地测试没有问题,但是传到虚拟主机上去了,COOKIE的问题超多。比如我在一个页面设置了个COOKIE,然后在另一个页面取值。有的是在火狐下可以取到,在IE下取不到,有的是两个都可以取到,有的是两个都取不到。这些COOKIE都是在html标签之前设置的,并且之前都没有输出任何内容。程序应该没有问题,因为我把我的机器作为服务器,别人访问我的网站时都是正常的,为什么放到买的空间上去了问题这么多。主要是调试很麻烦,真是要崩溃。setCOOKIE无论是简写参数或者是参数都设置都没有用。
和path以及设置域名无关,我都试过。
我看了下空间里的错误日志,很多这样的警告,是啥原因
[27-Mar-2010 17:37:00] PHP Warning: Cannot modify header information - headers already sent by (output started at /home/tangyeco/public_html/include/fy.php:2) in /home/tangyeco/public_html/friendalbumlist.php on line 7

大哥,你说的啥意思?是不是在后面不能有空格或空行?应该在?>后立即回车,然后紧接着写其他代码?你写的解决办法二是啥意思,没看懂啊
当前问题共有如下(3)个解决方案
  • 泡椒肥喵
    泡椒肥喵

    这个和域名应该没多大的关系,不过你可以设置域名为你自己的网址如
    www.111cn.net
    设置成
    111cn.net
    这样的话,他的二级域名都可以正常访问cookie

  • 小旋风柴进
    小旋风柴进

    setcookie之前不能有输出或者空格字符
    你好好检查一下那个提示页面.

  • 祁同伟
    祁同伟

    cookie是和域名有关的,你setcookie的时候指定的域名、path和访问时使用的是否配套。
    给你一个调试建议:
    首先由于返回setcookie这件事和浏览器是无关的,所以你可以只用firefox来测试,装上firebug或者http header这种能够截包的插件,请求你的php代码对应url,看返回的response部分是否和你预期的setcookie一致就能知道你的程序是否有问题了。

    回答补充:
    这是一个php的经典常见问题,是你的代码中因为编辑器的原因,在源代码的。>后面出现了空白字符,和echo的效果是一样的,所以在这个文件之后的set行为都会失败。

    解决办法:
    1、检查你的源代码,去除?>后的空行。
    2、不写?>,php -l不会有问题,也不会影响功能。

    回答补充2:
    你的php代码是单独写在.php文件里的,还是和html代码混在一起的。如果是后者的话,是肯定不可以的,因为前面如果有html输出就已经在setcookie之前有页面输出了。如果是后者的话,?>结束符后面是必须紧跟eof的,不能有任何空白符,否则也会认为是向页面输出了?>之后的内容。

上一篇:什么是虚拟主机以及如何租用
下一篇:thinkphp5 虚拟主机怎么安装