我正在尝试学习如何设置Cookie,以下代码在本地服务器上运行正常,但出于某种原因,它并不在实时服务器上运行。这是代码
<?php
$test = 'false';
if (isset($_COOKIE['test'])) $test = $_COOKIE['test'];
echo "<p><b>The value of the cookie 'test' is: $test</b></p>";
setcookie('test', 'I love cookies');
?>
我做了一些搜索,并且有人有同样的问题,但他回答他自己声称他弄清楚出了什么问题。这是他的答案:
已经完成了。问题是设置cookie,因为标题已经在该文件中发送,cookie没有保存。现在完成了。:)
那么,他的意思是什么?
答案 0 :(得分:3)
您是否使用相同的浏览器测试了localhost和live服务器(启用了Cookie)?
编辑:
在编辑之后,您应该在发送任何输出(如echo,print_r等)之前设置cookie,因为setCookie命令发送到带有标题的浏览器,并且所有标题都应在输出之前发送。您的代码应如下所示:
$test = 'false';
if (isset($_COOKIE['test'])) $test = $_COOKIE['test'];
setcookie('test', 'I love cookies');
echo "<p><b>The value of the cookie 'test' is: $test</b></p>";
如果您真的需要在设置cookie之前对输出执行某些操作,则可以使用输出缓冲:
$test = 'false';
if (isset($_COOKIE['test'])) $test = $_COOKIE['test'];
ob_start();
echo "<p><b>The value of the cookie 'test' is: $test</b></p>";
$buffer = ob_get_contents();
ob_end_clean();
setcookie('test', 'I love cookies');
echo $buffer;