![](/img/trans.png)
[英]PHP setcookie() gives “Cannot modify header information – headers already sent” warning
[英]PHP 5.4.X is capable of placing setcookie() after HTML markups without “Headers already sent” warning?
我曾经遇到过警告:无法添加标头信息-尝试在echo
或任何HTML标记后放置header()
session_start()
或setcookie()
时已经发送的 header()
。 但是,当我将本地服务器中的PHP升级到5.4.7 (在XAMPP 1.8.1中 )时,不再遇到此警告。 PHP 5.4.X正常吗?
在此示例中,我尝试将setcookie()
放在一些文本和echo
之后:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Cookie Test</title>
</head>
<body>
<h1>Cookie Test</h1>
<?php
if (isset($_COOKIE['test'])) {
echo "<p>{$_COOKIE['test']}</p>";
} else {
echo "<p>No cookie..</p>";
setcookie('test', 'You have a cookie!', time()+300, '/');
}
?>
</body>
</html>
然后我通过localhost / that-page.php打开页面并刷新..
Cookie测试
你有饼干!
在我的测试环境中, setcookie()
可以正常工作而不会发出任何警告。 我的设置有问题吗? 谢谢。
使用Win7x64和XAMPP 1.8.1
可能导致此行为的唯一环境问题是打开输出缓冲。
这可以通过多种方式完成
在php.ini中
output_buffering = On
要么
在htaccess / httpd.conf中
php_flag output_buffering On
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.