0

したがって、Cookie からユーザーが入力した情報から作成された配列からアイテムを返そうとしていますが、前のページから最初にページにアクセスしたときに何も表示されず、実際に更新する必要がある場合を除いて、正常に動作します。配列を参照してください。なぜ最初に表示されないのかわかりませんか?(問題なく動作する JavaScript アラートがいくつかあります。私が問題を抱えているのは配列だけです。) これが私のコードです。

$usergatsby = $_COOKIE['gatq'];
$usercatcher = $_COOKIE['catcherq'];
$userwaves = $_COOKIE['wavesq'];
$userstranger = $_COOKIE['strangerq'];
$userulysses = $_COOKIE['ulyssesq'];
$userpride = $_COOKIE['prideq'];
$usermockingbird = $_COOKIE['mockingbirdq'];
$userroad = $_COOKIE['roadq'];


if ($_COOKIE['fname'] == NULL or $_COOKIE['lname'] == NULL or $_COOKIE['address'] == NULL or $_COOKIE['city'] == NULL or $_COOKIE['state'] == NULL or $_COOKIE['zip'] == NULL or $_COOKIE['email'] == NULL)
{echo "<script language='javascript'>
window.alert('You left some information on the personal info page! You will be redirected.');
    window.location.href='personal.php';</script>";
}

else
    {   


    if ($_COOKIE['gatq'] == NULL &&
        $_COOKIE['catcherq'] == NULL &&
        $_COOKIE['wavesq'] == NULL &&
        $_COOKIE['strangerq'] == NULL &&
        $_COOKIE['ulyssesq'] == NULL &&
        $_COOKIE['prideq'] == NULL &&
        $_COOKIE['mockingbirdq'] == NULL &&
        $_COOKIE['roadq'] == NULL)

            {echo "<script language='javascript'>
                window.alert('You don't have anything in your shopping cart! You will be redirected.');
                window.location.href='inventory.php';</script>";
            }

                    else
                        {$productarray = array($usergatsby=>'The Great Gatsby <img src="gatsby.jpg">',
             $usercatcher=>'Catcher in the Rye <img src="catcher.jpg">',
              $userwaves=>'The Waves <img src="waves.jpg">',
              $userstranger=>'The Stranger <img src="stranger.jpg">',
              $userulysses=>'Ulysses <img src="ulysses.jpg">',
              $userpride=>'Pride and Prejudice <img src="pride.jpg">',
              $usermockingbird=>'To Kill a Mockingbird <img src="mockingbird.jpg">',
              $userroad=>'On the Road <img src="ontheroad.jpg">'
              );

                            asort($productarray);
                            foreach ($productarray as $book=>$info)
                                        {if ($book > 0)
                                                {echo "Quantity: " . $book . " " . $info . "<br>";}
                                        }


                        }


    }


?>
4

2 に答える 2

3

新しいページ リクエストが行われるまで、Cookie の値を読み取ることはできません。これは、Cookie データの値がページ リクエストと共に送信されるためです。そのため、値が設定されて新しいページ要求が行われるまで、値にアクセスすることはできません。

于 2013-05-02T20:48:18.713 に答える
0

私はここでジョンに概ね同意しますが、追加したいのは、あなたのスクリプトは、クライアントのブラウザから送信されたリクエストの特別なヘッダーからクッキーを取得するということです。ページの最初のリクエストを送信するときにブラウザが将来の Cookie を認識していなかったため、それらを提供できませんでした。

于 2013-05-02T20:52:48.387 に答える