如何使用PHP会话或cookie来实现这一目标?

时间:2010-01-31 21:40:26

标签: php cookies session

我的网站与语言无关,我根据用户选择提供了多种语言包。

用户选择表:

<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");

问题是,当我点击网站上的新页面时,再次忘记所选语言并加载默认英语。我知道我应该使用cookie或会话来保存所选语言,以便所有页面加载该语言包。但是如何?

3 个答案:

答案 0 :(得分:4)

在页面顶部:

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()只应在页面中调用一次。通常在开头附近。

答案 1 :(得分:2)

我会使用cookies,因为我们谈的是语言选择,用户不太可能改变他/她的语言选择。对于会话,如果用户关闭他/她的浏览器,则重置语言选择。除了更多的代码之外,它与@ Chacha102的解决方案类似。您可以使用函数

将语言选择存储在cookie中
setcookie()

然后将cookie存储在用户的计算机上。您还可以指定cookie何时过期。然后,您可以使用$_COOKIE(类似于$_SESSION)检索Cookie的值(语言选择)。

绝对读到这个: http://www.w3schools.com/PHP/php_cookies.asp

答案 2 :(得分:0)

如果要使用会话,则必须在每个页面上使用session_start()。