2012-12-17 53 views
-3

你好我有一個問題如何使用會話。如何使用會話?

我想更改網站的語言。所以語言設置的邏輯如下:

當調用我的網站時,它將被檢查,如果有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"; 
    } 
?> 

這就是我所有的頁面是建立的。

如果有人能告訴我如何使用會議,我真的很感激。

非常感謝。當你要鏈接的<li> 使用

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

不要使用<li>

+2

**「不工作」**這是描述性的。 – 2012-12-17 20:52:56

+0

感謝這個稱職的答案! – bonny

+3

@bonny它仍然是完全準確的。你的問題到底是什麼? –

回答

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> 

通過POST,當你閱讀新的朗之前,它被加載!其他選項是在實際檢查之前移動設置會話的代碼。

傑弗瑞斯的答案也是對的。你原來的代碼根本不發送lang。

+0

你好,我想要那個鏈接只是添加會話值。這是不可能的?謝謝。 – bonny

0

你必須提交郎後relod頁面外的A HREF