Почему мой файл cookie локализации не хочет меняться? - PullRequest
0 голосов
/ 28 августа 2009

Почему я не могу изменить cookie?

Если вы выбрали язык, который вы не можете изменить. Вы должны очистить куки, если хотите сменить язык. Почему это так?

if (isset($_GET['setLang']) && $_GET['setLang'] == 'en' 
|| isset($_COOKIE['setLang']) && $_COOKIE['setLang'] == 'en') {
setcookie("setLang", 'en', time()+(3600*12)); //expires in 12 hours
include('language/en/common.php');
}


elseif (isset($_GET['setLang']) && $_GET['setLang'] == 'se' 
|| isset($_COOKIE['setLang']) && $_COOKIE['setLang'] == 'se') {
setcookie("setLang", 'se', time()+(3600*12)); //expires in 12 hours
include('language/se/common.php');
}

else if (isset($_GET['setLang']) && $_GET['setLang'] == 'fr' 
|| isset($_COOKIE['setLang']) && $_COOKIE['setLang'] == 'fr') {
setcookie("setLang", 'fr', time()+(3600*12)); //expires in 12 hours
include('language/fr/common.php');
}

// default language is english
else {
  include('language/en/common.php');
}

Ответы [ 3 ]

3 голосов
/ 28 августа 2009

Вы, конечно, можете изменить куки. Вы не можете изменять языки, используя логику, которая у вас есть, потому что, как вы написали, существующая настройка в $_COOKIE будет всегда переопределять настройку в $_GET (кроме en, где $_GET будет проверен первым, поэтому сейчас вы сможете переключиться на en, если вы начали с другого языка). Сначала вам нужно выполнить все проверки по $_GET, а затем все проверки по $_COOKIE, если вы хотите изменить язык.

2 голосов
/ 28 августа 2009

Логика тоже ранила мой мозг.

$language = $_GET['setLang'] || $_COOKIE['setLang']) || 'en';
setcookie("setLang", $language, time()+(3600*12));
include('language/' . $language . '/common.php');

Должен достичь того же эффекта и исправить проблемы с файлами cookie (хотя и не проверено).

0 голосов
/ 28 августа 2009

setcookie () определяет cookie для отправлено вместе с остальной частью HTTP заголовки. Как и другие заголовки, печенье должен быть отправлен до любого вывода из ваш сценарий (это протокол ограничение). Это требует, чтобы вы сделать вызов этой функции до любой вывод, в том числе и теги, а также любые пробелы.

http://in3.php.net/setcookie

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...