Warning:Cannotmodifyheaderinfor
Warning: Cannot modify header information - headers already sent by....
这是在使用cookies时,设置其过期时间出现的问题,出现问题后查找网络和php手册,发现问题所在.
在php手册中说到
setcookie() 定义一个和其余的 HTTP 标头一起发送的 cookie。和其它标头一样,cookie 必须在脚本的任何其它输出之前发送(这是协议限制)。这需要将本函数的调用放到任何输出之前,包括 <html> 和 <head> 标签以及任何空格。如果在调用 setcookie() 之前有任何输出,本函数将失败并返回 FALSE。如果 setcookie() 函数成功运行,将返回 TRUE。这并不说明用户是否接受了 cookie。 意思是,在使用setcookie时,必须在html之前并且没有echo输出,但是我的setcookie仍然有Warning: Cannot modify header information - headers already sent by....问题,但是已经按上述处理了.www.forasp.cn网站制作学习网
而后又发现了
自 PHP 4 起,可以用输出缓存来在调用本函数前输出内容,代价是把所有向浏览器的输出都缓存在服务器,直到下命令发送它们。可以在代码中使用 ob_start() 及ob_end_flush() 来实现这样的功能,或者通过修改 php.ini 中的 output_buffering 配置选项来实现,也可以通过修改服务器配置文件来实现。ob_start(),通过查php手www册.f并o翻r译a得s到p下.面c文n章.
ob_start -打开输出缓冲 ,这个函数会变成输出缓冲。虽然是积极的输出缓冲没有输出从脚本发送(除头),而输出是在内部缓冲区中。ob_end_flush()函数被调用时,或当输出缓www冲.for区刷asp新.cn在请求结束到浏览器。当output_callback被调用时,它将得到作为其参数输出缓冲区的内容,预计将返回一个结果,将发送到浏览器新的输出缓冲区。如果output_callback不是一个可调用的函数,这个函数将返回FALSE。如果回调函数有两个参数,第二个参数是位充满了场的PHP_OUTPUT_HANDLER_START,PHP_OUTPUT_HANDLER_CONT和PHP_OUTPUT_HANDLER_END组成
意思是在使用setcookie之前要打开缓冲.在页面setcookie之前加上 ob_start();后,问题解决.