我的网站与语言无关,我根据用户选择提供了多种语言包。
用户选择表:
<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或会话来保存所选语言,以便所有页面加载该语言包。但是如何?
答案 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的值(语言选择)。
答案 2 :(得分:0)
如果要使用会话,则必须在每个页面上使用session_start()。