【发布时间】:2013-06-22 00:18:39
【问题描述】:
像这样销毁和取消设置会话是否安全? 它是否遵循编码标准?
我正在为一个网站实现 Logout 脚本。用户登录后,并成功设置会话
session_name("website_sess")
session_start();
这是用户单击注销按钮时调用的脚本
if ( ( isset($_SESSION['firstsessionname']) )
&& ( !empty($_SESSION['firstsessionname']) ) ) {
$_SESSION['firstsessionname'] = '';
}
if ( ( isset($_SESSION['secondsessionname']) )
&& ( !empty($_SESSION['secondsessionname']) ) ){
$_SESSION['secondsessionname'] = '';
}
if ( ( isset($_SESSION['thirdsessionname']) )
&& ( !empty($_SESSION['thirdsessionname']) ) ){
$_SESSION['thirdsessionname'] = '';
}
if ( ( isset($_SESSION['fourthsessionname']) )
&& ( !empty($_SESSION['fourthsessionname']) ) ){
$_SESSION['fourthsessionname'] = '';
}
session_name("website_sess");
session_start();
session_unset();
$_SESSION[]=array();
session_destroy();
session_regenerate_id(TRUE);
安全吗? session_regenerate_id(TRUE) 应该在那里吗?销毁所有会话后。
【问题讨论】:
-
这绝对是矫枉过正
-
kyle,你说它是好是坏?很担心,我不确定是否应该在它被销毁后重新生成它,因为我仍然会在另一个页面上再次启动会话。
-
如果您将
$_SESSION设置为一个空数组,则不需要任何这些 if 语句。销毁会话后,就是这样 - 当您在下一页开始新会话时,我希望它会自动具有不同的 ID,因此您也不需要重新生成。另一件值得注意的事情:您的$_SESSION[]=array();行只是添加了一个新密钥。您可能打算输入$_SESSION = array();代替(注意缺少方括号)。 -
您很可能收到了 E_NOTICES,因为在 session_start 之前 $_SESSION 是未定义的;你的如果永远不会发生
标签: php