簡體   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