解决PHP Warning: Cannot modify header information - headers already sent by的终极方案
原因分析:在PHP里Cookie的使用是有一些限制的。
1、使用setcookie必须在标签之前
2、使用setcookie之前,不可以使用echo输入内容
3、直到网页被加载完后,cookie才会出现
4、setcookie必须放到任何资料输出浏览器前,才送出
解决方案:
1,文件开头写上ob_start();
ob_start :打开输出缓冲区
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
2,php.ini 把 output_buffering 设为 on 重起apache
3,部分情况是多出现在UTF编码的文件。因为在一般的文本编辑器(记事本),尤其是微软的各种产品,在编辑完保存完后,总是会自动在最前面缀上一个BOM,在windows 托管的服务器上没问题,而在UNIX服务器上就会产生问题。比如在代码中用到session或header时,因前有看不见的BOM
你可以用写字板打开,光标移到最前面,先退行,在按delete键去掉刚才加的那一空行。在保存的时候,写字板总是回保存为UTF-8编码的格式;同样你可以在dreamweaver的专业编辑器中已定为UTF-8格式进行编辑。

