-3

こんにちは、セッションの使い方について質問があります。

サイトの言語を変更したいと考えています。したがって、言語設定のロジックは次のとおりです。

私のサイトを呼び出すときに、browser_accept_language があるかどうかがチェックされます。言語設定がある場合は優先言語として使用され、それ以外の場合はデフォルト言語が設定されます。次のステップでは、セッションに保存されている設定が既にあるかどうかがチェックされます。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;

}...

続いて、フッターの mainwrapper 用の html が続きます。

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

これが私のすべてのページの構成要素です。

セッションの使い方を教えてくれる人がいたら、本当に感謝しています。

どうもありがとう。

4

2 に答える 2

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>

の外部で a href を使用しないでください<li>

于 2012-12-17T20:58:36.477 に答える
0

POST 経由で lang を送信した後、ページを再ロードする必要があります。ロードされる前に新しい lang を読み取るためです。他のオプションは、実際にチェックされる前にセッションを設定するコードを移動することです。

ジェフリーの答えも正しいです。元のコードは lang をまったく送信していませんでした。

于 2012-12-17T21:19:03.720 に答える