PHP-массив из файла cookie: отображается только после обновления страницы?

Поэтому я пытаюсь вернуть элементы из массива, который сделан из введенной пользователем информации из файлов 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>";} } } } ?> 

Related of "PHP-массив из файла cookie: отображается только после обновления страницы?"

Вы не можете прочитать значение cookie до тех пор, пока не будет сделан новый запрос на страницу. Это связано с тем, что значение данных cookie отправляется с запросом страницы. Таким образом, он недоступен для доступа к его значению до тех пор, пока он не будет установлен, и не будет сделан новый запрос страницы.

Хотя я вообще согласен с Джоном здесь, я хочу добавить: ваш скрипт получает cookie из специального заголовка в запросе, отправленном браузером клиента. Учитывая, что браузер не знал будущих куки, когда он отправлял первый запрос на страницу, он не мог их предоставить.