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() は、残りの HTTP ヘッダーと一緒に送信される Cookie を定義します。他のヘッダーと同様に、Cookie はスクリプトからの出力の前に送信する必要があります (これはプロトコルの制限です)。これには、タグや空白を含め、出力の前にこの関数を呼び出す必要があります。

于 2013-03-14T00:46:24.463 に答える