当include在输出后发生时,我可以在include脚本中调用setcookie吗


Can I call setcookie in a included script when the include occurs after output?

我知道在将任何输出放到页面上之前必须调用setcookie(),但我不知道当包含时会发生什么。假设我有两个名为A.php和B.php的文件,它们看起来像这样:

A.php:

<?php
setcookie("key", "value", time() + (60*60*24));
echo "Hello World";
?>

B.php

<html>
<body>
<?php include("A.php"); ?>
</body>
</html>

如果我在web浏览器中打开B.php,setcookie会在html和body-open标记之后被调用吗?

是。如果在B.php中包含A.php,则setcookie将不工作。

避免输出任何内容的常见方法是启动输出缓冲区。在B.php的顶部放置:

<?php ob_start();?>

然后在最后放:

<?php echo ob_get_clean(); // flush the buffer ?>