1

我现在正在学习 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>
4

2 回答 2

3

您可能会收到headers already sent警告:您需要在将任何输出发送到浏览器之前设置 cookie,并且您正在执行echo它之前的一行。

因此,在设置 cookie 之前,请确保没有输出(空行、空格、回显等)。

于 2013-03-14T00:45:28.950 回答
1

尝试

if ($fname) {
        setcookie("name", $fname, time()+6000);
        echo "your name is ".$fname;
        echo "cookie" . $_COOKIE['name'];
    }

手动的

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

于 2013-03-14T00:46:24.463 回答