2011-10-11 80 views
2

我在我的網站上添加了一個多語言系統,但遇到了這個錯誤。每次我嘗試設置我的$ _SESSION一定的價值,它說注意:全局會話中的未定義索引

Notice: Undefined index: lang in ...\pages\lang.php on line 3 

我注意到什麼,當我試圖設置$ _SESSION在我的核心文件,它的工作原理,但如果我想要包含將會話設置爲核心文件的文件,則會拋出該錯誤。下面是core.php中的片段:

<?php 
session_start(); 
//some code 
//if I type $_SESSION['lang'] = 'smth'; here, it will work 
if (!isset($_GET['page']) || $_GET['page'] == "" || !file_exists('pages/'.$_GET['page'].'.php')) { 
    include 'pages/home.php'; 
} else { 
    include 'pages/'.$_GET['page'].'.php'; 
} 
?> 

頁/ lang.php:

<?php 
$lang = $_GET['lang']; 
$_SESSION['lang'] == $lang; 
var_dump($_SESSION); //prints an empty array (array { }) 
//header("Location: index.php"); 
?> 

任何想法?謝謝。

+0

看起來'$ _GET ['lang']'沒有被定義。 – Hammerite

+2

直接在include指令中使用查詢參數是一個可怕的BAD思想 - 它允許遠程用戶通過修改瀏覽器中的url來包含他們想要的任何文件。至少你已經強制實施了一個'.php'擴展名,但是仍然可以讓它們在你的服務器上包含任何.php文件,無論你是否希望它們。 –

+0

@Hammerite,它在URL中定義。 – Tom

回答

3

您需要在每個使用$ _SESSION變量的腳本的開頭包含session_start();

另外,錯字:$_SESSION['lang'] == $lang;應該只是一個'='。

+0

正如我所提到的那樣,如果我在覈心文件中設置了會話變量,它就會起作用 – Tom

+0

我認爲他意味着你需要在'pages/lang.php'中啓動會話 –

+0

根據你的代碼片斷,'pages/lang.php'不**使用'session_start();'。正如Dvir所說的,你必須在_every_腳本中包含'session_start();'會話變量 – Herbert