Как использовать PHP сессии или куки для достижения этой цели? - PullRequest
2 голосов
/ 01 февраля 2010

Мой веб-сайт не зависит от языка, у меня есть несколько языковых пакетов, которые я включаю в зависимости от выбора пользователя.

Форма выбора пользователя:

<form action='' method='POST'>
        <select name='language' onchange='this.form.submit();'>
         <optgroup>
            <option>Language</option>
         <option value='eng'>English</option>
         <option value='esp'>Español</option>
            <option value='fra'>Français</option>
            </optgroup>
        </select>
</form>

Сценарий:

 $language = $_POST['language'];

 if($language == "esp")
  include("languages/esp.php");
 else if($language == "fra")
  include("languages/fra.php");
 else
  include("languages/eng.php");

Проблема в том, что, когда я нажимаю на новую страницу на сайте, выбранный язык снова забывается и загружает английский по умолчанию. Я знаю, что я должен использовать куки или сеансы, чтобы сохранить выбранный язык, чтобы все страницы загружали этот языковой пакет. Но как?

Ответы [ 3 ]

4 голосов
/ 01 февраля 2010

В верхней части страницы:

session_start();
if(isset($_SESSION['language']))
{
     $language = $_SESSION['language'];
}
else
{
     $language = "en";
}

include("languages/".$language.".php");

На странице формы:

session_start() // assuming you haven't already done this from the above code

$languages = array("en", "esp", "fra");
if(in_array($_POST['language'], $languages))
{
    $_SESSION['language'] = $_POST['language'];
}

Обратите внимание, что session_start() следует вызывать только один раз на странице. Обычно ближе к началу.

2 голосов
/ 01 февраля 2010

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

setcookie()

. Затем файл cookie сохраняется на компьютере пользователя.Вы также можете указать, когда срок действия файла cookie истечет.Затем вы можете получить значение cookie (выбор языка), используя $_COOKIE (аналогично $_SESSION).

Определенно прочитайте это: http://www.w3schools.com/PHP/php_cookies.asp

0 голосов
/ 01 февраля 2010

Вы должны использовать session_start () на каждой странице, если вы хотите использовать сессии.

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