2016-11-26 51 views
1

我正试图学习如何设置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

所以在远程计算机,您不能设置曲奇饼? –

+0

是的,当我尝试使用与在线服务器相同的代码时,它不会生成cookies –

回答

3

您是否使用同一浏览器测试了本地主机和活动服务器(启用了Cookie)?

编辑:

按照你的编辑,你应该设置Cookie,然后送样回声,print_r的等任何输出......作为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; 
+0

我做了,它只在本地主机上运行 –

+0

您看到了什么?总是'虚假'? – Kainax

+0

是一直'虚假'。它与服务器时间有什么关系? –

相关问题