PHP,setcookie函数不起作用


PHP, setcookie function doesn't work

我有代码:

$user_cookie = hash("sha512",$username);
$salt1 = hash("sha512", rand() . rand() . rand());
setcookie("c_user", $user_cookie, time() + 12 * 60 * 60, "/");
setcookie("c_salt", $salt1, time() + 12 * 60 * 60, "/");

在本地主机上它工作正常,但在网络服务器上不起作用。我不明白,为什么?此代码包含在 if 和所有其他代码中 if 有效,但 this-no。如果我写回声$user_cookie."'n".$salt1;我就有这些价值观!

根据setcookie()文档

setcookie() 定义了一个要与 HTTP 的其余部分一起发送的 cookie 头。与其他标头一样,必须在 的任何输出之前发送 cookie 您的脚本(这是协议限制)。这需要你放置 在任何输出之前调用此函数,包括 标记以及任何空格。

我在使用 cookie 时遇到了同样的问题,代码在本地主机上运行良好,但在网络服务器上不起作用,此外标题也无法正常工作。我通过向文件添加一段临时代码开始调试:

header("Location: /test");

我发现下面的代码工作正常

header("Location: /test");
include("myfile.php");

而另一个没有:

include("myfile.php");
header("Location: /test");

毕竟,我发现 myfile 中?>后有一个空格.php

如何修复PHP中的"标头已发送"错误

这适用于我为运行 EasyPHP 的本地开发环境和多个域的 GoDaddy 托管服务器设置一个小时的 cookie:

setcookie($cookie, $value, time()+3600, '/', '127.0.0.1', true);

尝试添加您的域(第 5 个参数/127.0.0.1),我建议将安全布尔值也设置为 true