我正在学习PHP。任何人都可以看看这个,看看为什么没有设置cookie并继续显示为空?
<?php
if ($_COOKIE["name"]) {
echo "welcome back" . $_COOKIE['name'];
}
else {
$fname = $_POST["fname"];
$age = $_POST["age"];
if ($fname) {
echo "your name is ".$fname;
setcookie("name", $fname, time()+6000);
echo "cookie" . $_COOKIE['name'];
}
if ($age) {
echo "your age is " . $age;
}
}
?>
<html>
<body>
<form action="index.php" method="post">
Name: <input type="text" name="fname">
Age: <input type="text" name="age">
<input type="submit">
</form>
<a href="info.php">info</a>
</body>
</html>
答案 0 :(得分:3)
您可能会收到headers already sent
警告:您需要在将任何输出发送到浏览器之前设置Cookie,并且您在其前面的行中执行echo
。
因此,在设置cookie之前,请确保没有输出(空行,空格,回声等)。
答案 1 :(得分:1)
尝试
if ($fname) {
setcookie("name", $fname, time()+6000);
echo "your name is ".$fname;
echo "cookie" . $_COOKIE['name'];
}
setcookie()定义了一个与其他HTTP头一起发送的cookie。与其他标头一样,必须在脚本的任何输出之前发送cookie(这是协议限制)。这要求您在任何输出之前调用此函数,包括和标记以及任何空格。