2015-06-01 143 views
1

在我致電session_start()之後,是否有將較短的名稱分配給會話變量並讓這些較短的名稱在頁面間保持不變的問題?舉例來說,如果用戶成功登錄:

session_start(); 
$_SESSION['email'] = $row->email; 
$_SESSION['firstname'] = $row->firstname; 
$email = $_SESSION['email']; 
$first = $_SESSION['firstname']; 

請問$email$first堅持一頁一頁地?

+3

會話變量將持續存在,局部變量不會。您可以使用較短的名稱創建新的會話變量(將它們傳輸到數據中)並使用UNSET銷燬原件。 $ email和$ first不是會話變量,所以它們不會持續。 –

+0

所以你說我可以將$ _SESSION ['firstname']'縮短爲'$ _SESSION ['first']'而不是'$ first'。你是這個意思嗎? – emailcooke

+0

這是正確的答案。不確定爲什麼它是評論而不是答案。你可以將它移動到一個實際的答案,所以我可以檢查它作爲答案? – emailcooke

回答

0

不要使用局部變量,使用會話變量,例如:

$_SESSION["shorty"] = $_SESSION["extremely_long_variable_name"]; 
unset($_SESSION["extremely_long_variable_name"]); 

破壞原有的變量,所以它不會消​​耗任何內存。局部變量不會從epage持續到頁面。

0

那些變量$first$email將不會持續。

我認爲最好的選擇是在腳本末尾添加一段代碼,將所有相關信息保存到會話中,或編寫自己的包裝$ _SESSION的類。

如果您不想顯式調用它,例如因爲您的頁面提前退出,您可以註冊一個在腳本結尾處調用的函數。這個函數可以抓住你需要的所有東西並保存在$ _SESSION中。使用register_shutdown_function來註冊這樣的功能。