为什么此代码仅在本地服务器上正常工作?

时间:2016-11-26 08:40:44

标签: php

我正在尝试学习如何设置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没有保存。现在完成了。:)

那么,他的意思是什么?

1 个答案:

答案 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;