2013-06-05 2 views
0

Im, сохраняющий страну-пользователя в файле cookie, а затем изменение содержимого в зависимости от этой переменной.Хранение файлов cookie и ссылок на переменные

Если страна cookie не установлена, я использую свой IP-адрес, чтобы получить код страны. Я также предоставил раскрывающийся список, чтобы они могли вручную перезагрузить свою страну.

Моя проблема заключается в том, что файл cookie, похоже, не установлен до загрузки страницы. Например, начальное значение файла cookie - «US», я устанавливаю его в «GB», а затем повторяю его. «США» повторяется, несмотря на то, что он просто меняет его на «ГБ», пока я не обновляю страницу, а затем переключится на «ГБ».

Проблема заключается в том, что, когда посетитель переключается на GB, например, он остается в США, пока не обновит страницу еще раз.

Кто-нибудь знает, как устранить проблему, описанную выше?

Спасибо

<?php 
if(!isset($_COOKIE['Country'])) { 
    /* Collect Country Code */ 
} 

if(isset($_POST['submit'])){ 
    $country = $_POST['country']; 
    setcookie('Country', $country, time()+60*60*24*30); 
    $country = $_COOKIE["Country"]; 
} 

echo $country; 
?> 
+0

вы можете обновить cookie через JS, не отправляя серверу. – pvnarula

ответ

0

Ну, по умолчанию значение куки является всегда возвращается в следующей загрузке страницы в PHP, причина в том, что значения куки отправляются браузером при запросе страницы нагрузки, а впоследствии только resent на следующем запросе, поэтому изменение отражает только когда приходит следующий запрос страницы. Прочтите Руководство по PHP на setcookie - http://php.net/manual/en/function.setcookie.php, и он скажет вам это в первом абзаце

Логично, если бы я писал этот код , Я не знаю, почему вы пытаетесь прочитать значение формы из файла cookie в файле fi первое место.

$country = $_COOKIE['Country']; 
if isset($_POST['submit']) { 
    $country = $_POST['country']; //sets up $country for current page 
    setcookie('Country', $country, time()+60*60*24*30); //sets up $country for subsequent page loads 
} 

$ страны будет отражать предпочтения страны пользователя для остальной части страницы и значения куки устанавливаются для всех последующих страниц, которые пользователь ссылается. Вместо того, чтобы ссылаться на файл cookie суперглобальный для любого кода, то есть $ _COOKIE ['Country'], установите вместо этого код вместо $ country (локальная переменная). Я думаю, что ваша проблема будет решена.

Смежные вопросы