【问题标题】:how to use sessions? [closed]如何使用会话? [关闭]
【发布时间】: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 它仍然完全准确。你的问题到底是什么?
  • 启动会话,向其中添加内容,然后在完成后清除它
  • 问一个正确的问题。上面的代码不起作用怎么办?

标签: php html session


【解决方案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>

当你想链接&lt;li&gt; 使用

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

不要在&lt;li&gt;之外使用a href

【讨论】:

  • 你好,我想拥有该链接只是为了添加会话值。那不可能吗?谢谢。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2010-12-18
    • 1970-01-01
    • 2014-05-14
    • 2014-03-11
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    相关资源
    最近更新 更多