2015-06-25 44 views
1

我想用$ _GET [「」]的方法來保存語言的會話:如何在使用php的會話中保存語言?

<a href="?lang=fr">French</a> 
<a href="?lang=en">English</a> 

默認情況下,該網站的語言是法語。如果用戶從上面的鏈接中選擇一個,網站語言將被更改。然後甚至認爲$ _GET ['lang']沒有設置,我想$ _SESSION ['lang']總是保存用戶選擇的最後一種語言。

我試過,但它不是邏輯,我知道..

$languages = array('en', 'fr'); 
if(isset($_GET['lang']) AND in_array($_GET['lang'], $languages)){ 
    $_SESSION['lang'] = $_GET['lang']; 
}else{  
    $_SESSION['lang'] = "fr";  
} 
require_once('languages/'.$_SESSION['lang'].'.php'); 

我應該怎麼做,然後保存最後的語言會話變量?

+0

請確保您有'在session_start()' – Muhammet

+0

它已經存在, 的問題是,當$ _GET [「郎」]設置,語言的變化,但是當用戶進入到另一個頁面,$ _SESSION ['lang']等於「fr」,默認語言,因爲如果$ _GET ['lan'] issset我做出改變語言的條件並且我不想那樣,我想要$ _SESSION ['lang' ]始終保持其最後的價值,我只是不知道那裏的邏輯 – Devstar

回答

3

發生什麼事情是,當你沒有在URL中的語言,它將其設置回法國。

要解決此問題,請在會話中設置語言(如果在URL中給出),否則如果根本沒有設置會話,則默認爲法語。

$languages = array('en', 'fr'); 
if(isset($_GET['lang']) AND in_array($_GET['lang'], $languages)){ 
    $_SESSION['lang'] = $_GET['lang']; 
} 
if(!isset($_SESSION['lang']){  
    $_SESSION['lang'] = "fr";  
} 
require_once('languages/'.$_SESSION['lang'].'.php'); 
+0

謝謝穆罕默德..這就是我一直在尋找:) – Devstar

+0

@Devstar不客氣:) – Muhammet

+0

旁註:因爲有一個'如果',如果!isset($ _ SESSION ['lang']){ $ _SESSION ['lang'] =「fr」; }'could改爲只是'else {$ _SESSION ['lang'] =「fr」; }'。 –