2015-06-01 147 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来注册这样的功能。