[英]How to use PHP sessions or cookies to achive this?
我的网站与语言无关,我根据用户选择提供了几种语言包。
用户选择表:
<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或会话来保存所选语言,以便所有页面都加载该语言包。 但是如何?
在页面顶部:
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()
在页面中仅应调用一次。 通常接近开始。
我会使用cookie,因为我们正在谈论语言选择,并且用户不太可能更改他/她的语言选择。 使用会话时,如果用户关闭其浏览器,则会重置语言选择。 它将类似于@ Chacha102的解决方案,只不过多了一些代码。 您可以使用函数将语言选择存储在Cookie中
setcookie()
然后将cookie存储在用户的计算机上。 您还可以指定Cookie何时过期。 然后,您可以使用$_COOKIE
(类似于$_SESSION
)来检索cookie的值(语言选择)。
一定要阅读以下内容: http : //www.w3schools.com/PHP/php_cookies.asp
如果要使用会话,则必须在每个页面上使用session_start()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.