【发布时间】:2012-12-05 00:15:01
【问题描述】:
你好,我有一个关于如何使用会话的问题。
我想更改网站的语言。所以语言设置的逻辑如下:
调用我的网站时,将检查是否有 browser_accept_language。 如果有语言设置,它将被用作首选语言,否则设置默认语言。 在下一步中,将检查是否已经在会话中存储了它的设置。 如果语言有会话值,则首选语言将更改为会话条目。
好的,这就是逻辑部分。现在我尝试编码。问题是它似乎不起作用,我不知道为什么。
所以php是:
<?PHP
session_start();
header ("Content-Type: text/html; charset=utf-8");
include_once "scripts/db_connect.php";
if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])){
$max = 0.0;
$languages = explode(",", (strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])));
foreach($languages as $language){
$language = explode(';', $language);
$q = (isset($language[1])) ? ((float) $language[1]) : 1.0;
if ($q > $max){
$max = $q;
$pref_language = $language[0];
}
}
$pref_language = trim($pref_language);
}
$_SESSION['language'] = $pref_language_changed;
if (isset ($_SESSION['language']) ){
$pref_language = $pref_language_changed;
}...
后跟一些 html 用于 mainwrapper 页脚:
if ($pref_language === "af" OR $pref_language === "en"{
$footer = "footer1";
}else{
$footer = "footer2";
}
include_once "../scripts/".$footer.".php";
页脚本身是:
... <ul class="flag">
<li id="'.$language_flag.'">
<ul class="drop_down">
<form action="'.$_SERVER['PHP_SELF'].'" method="post">
<a href="/foo"><li id="one"><div>language1</div></li></a>
<a href="/bar"><li id="two"><div>language2</div></li></a>
</form>
</ul>
</li>
</ul>...
<!--Footer -->';
if (isset($_POST['one'])){
$_SESSION['language'] = "language1";
}
if (isset($_POST['two'])){
$_SESSION['language'] = "language2";
}
?>
这就是我所有页面的构建基础。
如果有人能告诉我如何使用会话,我将不胜感激。
非常感谢。
【问题讨论】:
-
“不工作”很好,这是描述性的。
-
感谢您的出色回答!
-
@bonny 它仍然完全准确。你的问题到底是什么?
-
启动会话,向其中添加内容,然后在完成后清除它
-
问一个正确的问题。上面的代码不起作用怎么办?