繁体   English   中英

如何使用PHP会话或cookie实现此目的?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM