我正在读到setcookie()函数向任何页面添加HTTP标头,因此必须在发送任何实际页面内容之前调用该函数。这对我来说很有道理。
但在那之后,有一个例子:
<?php
if (!isset($_COOKIE['visits'])) { $_COOKIE['visits']=0; }
$visits= $_COOKIE['visits'] +1;
setcookie('visits', $visits, time() + 3600);
include 'welcome.inc.php'
...
我的意思是,如果setcookie()必须是第一个,它不应该是:吗
setcookie('visits', $visits, time() + 3600);
$visits= $_COOKIE['visits'] +1;
而不是:
$visits= $_COOKIE['visits'] +1;
setcookie('visits', $visits, time() + 3600);
这是一个非常新手的问题,但不能完全理解这个例子中需要在一切之前调用setcookie()。
Cookies(像所有HTTP标头一样)需要在向页面输出之前发送,例如在打印()或echo()任何内容之前,并且不允许在第一个<?php。
但是
$visits= $_COOKIE['visits'] +1;
不会向页面添加任何输出,因此使用它是安全的。
http://php.net/setcookie
文档说,在脚本输出任何内容之前,您需要设置cookie。
原因:我本来会解释的,但这个链接做得很好。在回显内容之前,请务必调用setCookie。
如何修复";标头已发送";PHP 中的错误