繁体   English   中英

PHP 5.4.X能够在HTML标记后放置setcookie()而不发出“标题已发送”警告吗?

[英]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()可以正常工作而不会发出任何警告。 我的设置有问题吗? 谢谢。

使用Win7x64XAMPP 1.8.1

可能导致此行为的唯一环境问题是打开输出缓冲。

这可以通过多种方式完成

在php.ini中

 output_buffering = On

要么

在htaccess / httpd.conf中

 php_flag output_buffering On

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM