2013-10-09 21 views
0

我已經創建了一個登錄腳本(http://pastebin.com/bCpXYwPq),並且我知道它很容易發生SQL注入,稍後我會解決這個問題。如何使一個變量可以在任何頁面上訪問?

無論如何,我需要變量'$ users',所以我可以在任何地方回顯它。

示例:在帳戶頁面上,我希望它回顯電子郵件地址。 如果變量只存儲在登錄腳本中,我該怎麼做?

+0

你好。我認爲你在這裏有四個不同的用戶帳戶 - 如果你堅持只有一個,會很感激。通過允許您累積聲望點,它會讓您受益。請在您的問題中張貼代碼,而不是在單獨的粘貼板上。 – halfer

+0

我只想指出,如果您提出這樣的問題,您的「登錄腳本」可能無法按預期工作,給您帶來一些嚴重的安全問題。 – nietonfir

回答

2

把序列變量$users$_SESSION

這樣的:

session_start(); 
$_SESSION['users'] = serialize($users); 

而再次趕上$用戶:

session_start(); 
$users = unserialize($_SESSION['users']); 
+0

我該怎麼做? –

+0

session_start(); $ _SESSION ['users'] = $ users; – Brant

+0

並序列化使用: http://php.net/manual/pt_BR/function.serialize.php –

1

你需要深入會話(http://php.net/manual/en/features.sessions.php

登錄.PHP:

session_start(); 
$_SESSION["username"]=$username; 
$_SESSION["email"]=$email; 
$specialdata=array("a","b","c"); 
$_SESSION["specialdata"]=serialize($specialdata); 

在您需要訪問數據的所有其他網頁:

session_start(); 
if(!isset($_SESSION["username"])) 
{ 
// User not logged in 
echo "You aren't logged in" 
} 
else 
{ 
// Logged in 
echo "The username is: " . $_SESSION["username"]; 
echo "Your email is: " . $_SESSION["email"]; 
$specialdata=unserialize($_SESSION["specialdata"]); 
echo "First element of special data: " . $specialdata[0]; // Prints a 
} 
+0

這是行不通的。我需要存儲整行數據,而不僅僅是電子郵件和用戶名。 –

+0

那麼,你可以做$ _SESSION [「data」] = serialize($ your_data);然後反序列化($ _ SESSION [「data」]); – Lorenz

+0

所以,$ _SESSION [「users」] = json_encode($ users);在成功登錄腳本上。和json_decode($ _ SESSION [「users」]);在其他頁面? –

0

會議。 definetly。在所有頁面上使用session_start();,以便在登錄頁面上激活會話,只聲明$_SESSION['username'];,並且您可以隨處使用$_SESSION['username'];

相關問題