Php 如何使用会话?

Php 如何使用会话?,php,html,session,Php,Html,Session,你好,我有一个关于如何使用会话的问题 我想更改网站的语言。因此,语言设置的逻辑如下所示: 调用我的站点时,将检查是否有浏览器\接受\语言。 如果有语言设置,则将其用作首选语言,否则将设置默认语言。 在下一步中,将检查会话中是否已经存储了它的设置。 如果存在语言的会话值,则首选语言将更改为会话条目 好的,这是逻辑部分。现在我试着编码。问题是它似乎不起作用,我不知道为什么 因此,php是: <?PHP session_start(); header ("Cont

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

我想更改网站的语言。因此,语言设置的逻辑如下所示:

调用我的站点时,将检查是否有浏览器\接受\语言。 如果有语言设置,则将其用作首选语言,否则将设置默认语言。 在下一步中,将检查会话中是否已经存储了它的设置。 如果存在语言的会话值,则首选语言将更改为会话条目

好的,这是逻辑部分。现在我试着编码。问题是它似乎不起作用,我不知道为什么

因此,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;

}...
页脚本身是:

        ... <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";
    }
?>
。。。 '; 如果(isset($_POST['one'])){ $\会话['language']=“language1”; } 如果(isset($_POST['two'])){ $\会话['language']=“language2”; } ?>
这就是我所有页面的构建基础

如果有人能告诉我如何使用会话,我将不胜感激

非常感谢。

试试这个

<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>
当您想链接一个
  • 使用


  • 不要在
  • 之外使用a href。在通过POST提交语言后,您必须重新登录页面,因为您在加载新语言之前阅读了它!另一个选项是在实际检查会话之前移动设置会话的代码


    杰弗里的答案也是正确的。您的原始代码根本没有发送lang。

    “不工作”很好,这是描述性的。谢谢您的回答@邦妮,这仍然是完全准确的。你的问题到底是什么?开始课程,向其中添加内容,然后在你回答正确的问题时清除它。那么上面的代码不起作用了吗?您好,我想用那个链接来添加会话值。这不可能吗?谢谢
    <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><a href="/foo">Link</a></li>