Проверьте, существует ли PHP-cookie и, если нет, установите его значение.

Я работаю на многоязычном сайте, поэтому я попробовал этот подход:

echo $_COOKIE["lg"];
if (!isset($_COOKIE["lg"]))
    setcookie("lg", "ro");
echo $_COOKIE["lg"];

Идея в том, что если у клиента нетlg cookie (поэтому они впервые посещают этот сайт), затем установите cookielg = ro для этого пользователя.

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

Как я могу установить этот файл cookie, чтобы увидеть его значение со второгоecho при первом посещении / загрузке страницы пользователя? Должно быть без необходимости обновлять страницу или создавать редирек

Ответы на вопрос(2)

Решение Вопроса
Отве

PHP инструкция:

Как только файлы cookie установлены, к ним можно получить доступ при загрузке следующей страницы с помощью массивов $ _COOKIE или $ HTTP_COOKIE_VARS.

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

Работа вокруг

Но вы можете обойти это, также установив$_COOKIE когда ты звонишьsetcookie():

if(!isset($_COOKIE['lg'])) {
    setcookie('lg', 'ro');
    $_COOKIE['lg'] = 'ro';
}
echo $_COOKIE['lg'];
 Ramy Nasr24 окт. 2017 г., 17:49
Я бы лично рекомендовал не устанавливать$_COOKIE[] ценность. Это может обмануть другой фрагмент кода позже, чтобы у пользователя был этот cookie. Альтернативой будет$lg = (isset($_COOKIE['lg']) ? $_COOKIE['lg'] : 'ro'; echo $lg;
 Teodor24 мая 2012 г., 16:12
спасибо за обходной путь .. отлично работает
 Bas van Dijk23 мая 2018 г., 16:56
Отличный обходной путь!

тольк отправлено во время запроса, и поэтому не может быть получено, как только оно назначено (доступно только после перезагрузки).

После того, как файлы cookie были установлены, к ним можно получить доступ через следующая загрузка страницы с массивами $ _COOKIE или $ HTTP_COOKIE_VARS.

Если выход существует до вызова этой функции, setcookie () завершится с ошибкой и вернет FALSE. Если setcookie () успешно работает, он вернет TRUE. Это делаетн указывает, принял ли пользователь куки-файл.

не будет видно до следующей загрузки страницы что файл cookie должен быть виден для. Чтобы проверить, был ли cookie успешно установлен, проверьте его на следующей странице загрузки, прежде чем истечет срок действия cookie. Время истечения устанавливается через параметр истечения. Хороший способ отладить существование файлов cookie - просто вызвать print_r ($ _ COOKIE);.

Источни

Ваш ответ на вопрос