setcookie()不适用于我的网站,同样适用于phpfiddle&;W3学校

setcookie()不适用于我的网站,同样适用于phpfiddle&;W3学校,php,cookies,Php,Cookies,无法在我的网站上使用php“setcookie”设置cookie 这是我从学校得到的基本代码。它适用于w3schools(该示例适用于我的浏览器),也适用于phpFIDLE,但无论我刷新多少次,它都无法在我的网站上工作。下面是确切的代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> &l

无法在我的网站上使用php“setcookie”设置cookie

这是我从学校得到的基本代码。它适用于w3schools(该示例适用于我的浏览器),也适用于phpFIDLE,但无论我刷新多少次,它都无法在我的网站上工作。下面是确切的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
$cookie_name = "user3";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value); // 86400 = 1 day


if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
    echo "Cookie '" . $cookie_name . "' is set!<br>";
    echo "Value is: " . $_COOKIE[$cookie_name];
}
?>

</body>
</html>

尝试放置代码

$cookie_name = "user3";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value);
在html内容之上,即

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

这有助于理解此处设置cookie的基本机制。cookie仅在请求的响应头中设置(即,不使用javascript cookie设置技术)。在fac中,t中的
setcookie()
调用只是一个方便的函数,它使程序员不必手动设置与cookie相关的响应头

由于头只能在发送任何实际HTTP响应内容之前发送,因此必须在发送任何响应正文之前执行任何
setcookie()
调用(就像任何
header()
调用一样)


在您的情况下,在调用
setcookie()
之前发送几行HTML,这意味着包含cookie的标头将永远不会被发送,因为它在响应周期中已经太晚了。您需要在向浏览器进行任何输出之前移动此代码。

此问题不应使用[javascript]标记,因为它与Javascript@jbman223哦,对不起,我无意中添加了JS。。现在无法删除标记。也许mods可以帮助我已经批准了删除标签的待定编辑。顺便说一句,在进行调用时,您应该在“Headers ready sent”这行中得到一个错误。这不是最有用的错误消息,但如果您没有看到它,请确保您已启用日志记录(或正在向用户显示错误),并且您可以在错误出现时实际看到它们-这将使您的生活更加轻松。@Basic我没有。。谢谢,当编码的时候,这会让生活变得更轻松。非常感谢。你看,这里->,w3schools将代码放在doctype之后。我使用了完全相同的代码&它不起作用。@user3001859在编程社区中,W3Schools通常被认为是学习正确编码的可怕资源。用一大勺盐把从那里得到的任何东西都拿走。