如何使用会话?

时间:2012-12-17 20:50:12

标签: php html session

你好,我有一个如何使用会话的问题。

我想更改网站的语言。所以语言设置的逻辑如下:

在调用我的网站时,如果有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 for mainwrapper the footer:

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";
    }
?>

这就是我所有网页的构建。

如果有人可以告诉我如何使用会话,我真的很感激。

非常感谢。

2 个答案:

答案 0 :(得分:1)

试试这个

<ul class="drop_down">
    <form action="'.$_SERVER['PHP_SELF'].'" method="post">
        <li><input type="submit" name="one" value="language1"></li>
        <li id="two"><input type="submit" name="one" value="language2"></li>
    </form>
 </ul>

当您想要关联<li>时 使用

<li><a href="/foo">Link</a></li>

请勿在{{1​​}}

之外使用a href

答案 1 :(得分:0)

您必须在通过POST提交lang后重新登录页面,因为您在加载之前阅读了新的lang!其他选项是在实际检查之前移动设置会话的代码。

杰弗里斯的回答也是对的。您的原始代码根本没有发送lang。