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

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

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

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

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

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

31
задан TRiG 11 August 2016 в 16:07
поделиться

2 ответа

Ответ

Вы не можете в соответствии с Руководством по PHP :

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

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

Обойти

Но вы можете обойти это, также установив

Ответ

Вы не можете в соответствии с Руководством по PHP :

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

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

Обойти

Но вы можете обойти это, также установив [111] при вызове setcookie():

if(!isset(

Ответ

Вы не можете в соответствии с Руководством по PHP :

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

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

Обойти

Но вы можете обойти это, также установив

Ответ

Вы не можете в соответствии с Руководством по PHP :

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

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

Обойти

Но вы можете обойти это, также установив [111] при вызове setcookie():

[110]COOKIE
при вызове setcookie():

[110]COOKIE['lg'])) { setcookie('lg', 'ro');

Ответ

Вы не можете в соответствии с Руководством по PHP :

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

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

Обойти

Но вы можете обойти это, также установив

Ответ

Вы не можете в соответствии с Руководством по PHP :

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

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

Обойти

Но вы можете обойти это, также установив [111] при вызове setcookie():

[110]COOKIE
при вызове setcookie():

[110]COOKIE['lg'] = 'ro'; } echo

Ответ

Вы не можете в соответствии с Руководством по PHP :

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

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

Обойти

Но вы можете обойти это, также установив

Ответ

Вы не можете в соответствии с Руководством по PHP :

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

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

Обойти

Но вы можете обойти это, также установив [111] при вызове setcookie():

[110]COOKIE
при вызове setcookie():

[110]COOKIE['lg'];
COOKIE
при вызове setcookie():

[110]
76
ответ дан Treffynnon 11 August 2016 в 16:07
поделиться

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

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

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

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

Источник

10
ответ дан 0b10011 11 August 2016 в 16:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: