2012-05-23 46 views
0

我在login.php中文件的代碼的其他頁面識別:服務器變量不

//save user data 
    $token=$user->getId().'_'.hash('sha256',$user->getUsername().microtime()); 
    $name='fsusr_'.$user->getUsername(); 

    //set session and server variables 
    $_SESSION[$name]=$token; //set session variable 
    $_SERVER[$name]=$token; //set server variable 

,並在page_init.php,只需登錄過程後,我要檢索的服務器和會話變量這樣我就可以對它們進行比較,並決定下一步做什麼:

我這個第8行:

echo $_SERVER[$name]; 

事實上,問題是,其他頁面將我這個錯誤在這個行:

未定義指數:fsusr_smoootk在...上8行

當我作出的print_r($ _ SERVER)中的login.php,我看到包含$ _SERVER [$名]變量數組...但是當在其他頁面上做同樣的事情時,我發現它不再包含該變量。

我知道,它沒有服務器變量保存到其他頁面,但我不知道爲什麼?

在此先感謝

+1

如果設置一個值'$ _SERVER',這並不意味着你可以訪問它的另一個頁面上。這就是'$ _SESSION'存在的原因,以便在不同的調用之間保持數據。 –

回答

3

的$ _SERVER變量是爲服務器的信息。您應該將自己的變量分配到$ _SESSION中。

http://us.php.net/manual/en/reserved.variables.server.php

+0

但是看看這裏知道我想與做服務器變量: http://stackoverflow.com/questions/4431294/how-to-prevent-a-session – SmootQ

+1

你想做什麼?確定一個用戶是否從兩個不同的瀏覽器連接到您的網站?點是,你不能。 –

+0

當我之前問過這個問題時,他們告訴我創建一個與會話變量名稱相同的服務器變量,並在每個頁面加載中進行比較。 – SmootQ

1

試試這個$_SESSION['name'] = $token

要保存會話數據和呼應$ _ SERVER ...好人!

+0

的問題是:是動態生成的$名稱,它不是靜態 – SmootQ

+0

確定這一說法,但你需要尋找到echo語句, – jugnu

+0

$ _ SERVER是PHP的全局數組,# – jugnu