setcookie() 在我的网站上不起作用,同样适用于 phpfiddle 和 w3schools
setcookie() not working on my website, same works on phpfiddle & w3schools
无法在我的网站上使用 php 'setcookie' 设置 cookie。
这是我从 w3schools 获得的基本代码。它适用于 w3schools(该示例适用于我的浏览器),也适用于 phpfiddle,但无论我刷新多少次,它都不适用于我的网站。这是确切的代码:
<!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>
当我把它放在 phpfiddle 上时,这个完全相同的代码有效。但是在我的网站上不起作用..
此外,当我尝试使用 JavaScript 设置 cookie 时 - 它工作正常。
尝试放置代码
$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 仅在对请求的响应 header 中设置(即不使用 javascript cookie 设置技术)。 setcookie()
调用实际上只是一个方便的函数,它使程序员不必手动设置与 cookie 相关的响应 header。
由于 headers 只能在发送任何实际的 HTTP 响应内容之前发送,因此您必须先执行任何 setcookie()
调用(就像任何 header()
调用一样)发送任何响应 body.
在您的情况下,您在调用 setcookie()
之前发送了几行 HTML,这意味着永远不会发送包含 cookie 的 header,因为在响应周期。您需要在向浏览器输出任何内容之前移动此代码。
无法在我的网站上使用 php 'setcookie' 设置 cookie。
这是我从 w3schools 获得的基本代码。它适用于 w3schools(该示例适用于我的浏览器),也适用于 phpfiddle,但无论我刷新多少次,它都不适用于我的网站。这是确切的代码:
<!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>
当我把它放在 phpfiddle 上时,这个完全相同的代码有效。但是在我的网站上不起作用..
此外,当我尝试使用 JavaScript 设置 cookie 时 - 它工作正常。
尝试放置代码
$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 仅在对请求的响应 header 中设置(即不使用 javascript cookie 设置技术)。 setcookie()
调用实际上只是一个方便的函数,它使程序员不必手动设置与 cookie 相关的响应 header。
由于 headers 只能在发送任何实际的 HTTP 响应内容之前发送,因此您必须先执行任何 setcookie()
调用(就像任何 header()
调用一样)发送任何响应 body.
在您的情况下,您在调用 setcookie()
之前发送了几行 HTML,这意味着永远不会发送包含 cookie 的 header,因为在响应周期。您需要在向浏览器输出任何内容之前移动此代码。