Мы не должны беспокоиться о вашем вопросе, поскольку вы не брали никаких советов из предыдущего вопроса о точно такой же проблеме, но здесь говорится:
Вариант A
// As you do setCookie, also set the value in $_COOKIE
setCookie("foobar", "bat", time() + COOKIE_LIFETIME);
$_COOKIE["foobar"] = "bat";
var_dump($_COOKIE["foobar"]);
Вариант B
Не используйте $_COOKIE
для хранения вашей информации. Разделите переменные $token
, $secret
и $key
и загрузите их значениями из $_COOKIE
. Если $_COOKIE
пусто, инициализируйте их вручную и вызовите setCookie
.
if (isset($_COOKIE["token"]))
$token = $_COOKIE["token"];
else
{
$token = "defaultValue";
setCookie("token", $token, COOKIE_LIFETIME);
}
// Use $token instead of $_COOKIE["token"] from now on.
Вариант C
Если у пользователя не настроены файлы cookie, выполните setCookie
и переместите пользователя на тот же сайт снова с помощью header()
. Остерегайтесь бесконечных перемещений, если пользователь не разрешает вам устанавливать куки.
if (!isset($_COOKIE["token"])
{
setCookie("token", "defaultValue", COOKIE_LIFETIME);
header("Location: ".$_SERVER["REQUEST_URI"]); // insert reasonable URL here.
exit;
}
Вариант B будет предпочтительным. Надеюсь не увидеть этот вопрос в третий раз.
Вы не можете проверить тот же запрос, если пользователь отправит ваши куки в будущих запросах. setCookie
- это просто обращение к браузеру пользователей с просьбой приложить эту информацию к будущим запросам. Вы узнаете, работает ли он, отправит ли cookie следующий запрос. Если это невозможно, возможны следующие 3 сценария: а) браузер пользователя не позволяет вам устанавливать куки, б) пользователь не посещал ваш сайт раньше, в) срок действия ранее установленных куки истек.