2013-11-09 5 views
0

Я создал небольшой PHP-сайт, который работает на трех разных языках. Эти языки можно либо установить через $ _GET, либо $ _COOKIE с $ _GET, который будет первым, чтобы его можно было проверить, чтобы он мог перезаписать куки-файл, если это необходимо. Если я определяю нужный мне язык, я включаю файл, который содержит все мои переводы и устанавливает cookie для будущего использования. Код выглядит примерно так:cookie не сохраняется/правильно читается

<?php 
if (isset($_GET['language'])) { 

    // if language in $_SET is English, load english translation and set a cookie for the future. 
    if ($_GET['language'] == 'EN') { 
     setcookie('language','EN', time()+31536000); 
     include 'tekstenEngels.php'; 

    // if language in $_SET is French, load french translation and set a cookie for the future. 
    } elseif ($_GET['language'] == 'FR') { 
     setcookie('language','FR', time()+31536000); 
     include 'tekstenFrans.php'; 

    // lastly if language in $_SET is Dutch, load Dutch translation and set a cookie for the future 
    } else { 
     setcookie('language','NL', time()+31536000); 
     include 'tekstenNederlands.php'; 
    } 

// the same but for cookies in case this isn't the first visit 
} elseif (isset($_COOKIE['language'])) { 
    if ($_COOKIE['language'] == 'EN') { 
     include 'tekstenEngels.php'; 
    } elseif ($_COOKIE['language'] == 'FR') { 
     include 'tekstenFrans.php'; 
    } else { 
     include 'tekstenNederlands.php'; 
    } 
} 
?> 

Это прекрасно работает на моем locahost, но это, кажется, не писать/читать куки правильно при использовании на моем веб-сервере. Любые идеи, что я могу потерять/сделать неправильно?

ответ

0

убедитесь, что ваш файл php.ini разрешает использование файлов cookie. вы, возможно, захотите изучить session_set_cookie_params, если нет.

+0

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

+0

Чтобы отследить его, попытайтесь свести код к минимуму. Например: только опубликованный код, за которым следует только print_r ($ _ COOKIE) без каких-либо других условий, если и elses. Если это ненадежное/случайное, это может быть проблемой производительности сервера. Иногда [буферизация вывода] (http://php.net/manual/it/function.ob-start.php) может решить эти призрачные ошибки. – Joram

0

Если код идентичен, но результат отличается, он указывает на конфигурацию веб-сервера. Создайте следующий файл, называемый phpinfo.php:

<?php 
phpinfo(); 
?> 

Обзор к нему на вашем локальном хосте и на вашем веб-сервере, сравнивая результаты любого из/опций конфигурации, связанные куки сессии.

0

Я разместил этот вопрос в качестве гостя. Очищая все мои файлы cookie, чтобы ускорить поиск файлов cookie моих веб-сайтов, я вышел из этого веб-сайта, поэтому я больше не могу обновлять свой вопрос.

У меня было 2 разных страницы, которые использовали почти тот же php-код для проверки языка: «домашняя страница» (index.php) и страница «больше информации» (info.php). Единственное различие заключалось в перенаправлении: при настройке языка на странице index.php он указывал пользователю обратно на страницу index.php, а страница info.php указывала пользователю на страницу info.php.

По какой-то неизвестной причине при смене языка на странице index.php файлы cookie сохраняются корректно, а то же, что и на странице info.php, не работало, мне пришлось обновить страницу там для он работает, который я действительно не понимаю, поскольку он использует ТОЧНЫЙ САМЫЙ код.

Однако при изменении кода языка на странице info.php для перенаправления на index.php вместо страницы info.php это внезапно все сработало.

Ничего себе. Я действительно не вижу в этом никакой логики.

Эта проблема исправлена, хотя я не знаю, как ... Я предполагаю, что это имеет какое-то отношение к конфигурации сервера, но у меня нет никакого доступа к этому, поэтому я не могу вносить какие-либо изменения там.

Этот вопрос может быть закрыт.

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