php setcookie没有按预期工作

时间:2013-03-14 00:41:50

标签: php cookies

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

2 个答案:

答案 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'];
    }

Manual

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