Как я добавил в своем комментарии, из вашего описания (хотя и довольно расплывчатого и не слишком понятного), я думаю, что проблема может заключаться в том, что вы пытаетесь прочитать cookie перед его отправкой на сервер.
Как работает файл cookie:
- Вы делаете запрос
- Сервер отправляет заголовок файла cookie обратно клиенту
- Страница загружается - Cookie НЕ виден PHP на этой странице load
- Обновить
- Клиент отправляет заголовок cookie на сервер
- Сервер получает заголовок cookie, поэтому PHP может его прочитать
- Загрузка страниц - Cookie IS , видимый здесь.
Если вы еще не пробовали, обновите снова!
Поскольку вы хотите прочитать его одновременно с настройкой, просто сохраните значение, которое вы устанавливаете, и используйте его. В качестве альтернативы (хотя это не проверено), вы можете вручную установить его в массиве $_COOKIE
.
Так что-то вроде этого:
setcookie("helloworld", .. );
$_COOKIE['helloworld'] = $value;
Тогда вы можете прочитать это нормально. Обратите внимание, что я бы не советовал переопределять значение автоматического суперглобального (то же самое относится к $_REQUEST
, $_POST
, $_GET
и т. Д.), А вместо этого предложил бы просто сохранить значение, которое вы устанавливаете, и используйте это.
Другим подходом было бы использование формы «шлюза», то есть вы установили бы cookie на странице шлюза, которая затем продолжит перенаправлять вас на следующую страницу.
Например, скажем, ваш поток был следующим: login.php
-> account.php
. Вместо того, чтобы POST'ing вашу форму входа прямо на account.php
у вас есть 2 варианта.
Опция 1: верните POST в login.php, установите cookie, а затем перенаправьте на account.php
.
Вариант 2: имейте шлюз, такой как logincheck.php
, POST через него, установите cookie, а затем перенаправьте на account.php
.
Таким образом, account.php
всегда сможет увидеть ваше печенье.