销毁 php 后启动会话
Posted
技术标签:
【中文标题】销毁 php 后启动会话【英文标题】:Start session after destroy php 【发布时间】:2011-12-12 04:39:34 【问题描述】:我的 Web 应用程序有一个注销文件。我想在注销后创建一个会话,以便我可以回显注销成功消息。我的注销代码有效,但在销毁前一个会话后我无法创建新会话。
最好的方法是什么,见代码:
//LOGOUT.php
session_start();
//// unset all $_SESSION variables
session_regenerate_id();
session_unset();
session_destroy();
$_SESSION['logoutsuccess'] = 'You have successfully logged out.';
header("Location: /login/");
exit;
//LOGIN.PHP (ECHO SUCCESS MESSAGE)
if(isset($_SESSION['logoutsuccess']))
echo '<div class="success">'.$_SESSION['logoutsuccess'].'</div>';
unset($_SESSION['logoutsuccess']);
如果可能,我想避免在 url 中传递变量。
【问题讨论】:
进行重定向有什么好的理由吗?为什么登出页面不能显示成功状态? 【参考方案1】:在session_destroy()
之后再次呼叫session_start()
?
【讨论】:
这是解决您特定问题的最佳方法,但我仍然不明白您为什么不只在 LOGOUT.PHP 页面上显示消息。 @WatermarkStudios 我也在做同样的事情.. 他可能正在做重定向以避免刷新时重新提交表单...***.com/questions/6320113/…【参考方案2】:刚开始一个新的会话:
session_start();
session_destroy();
session_start();
$_SESSION['food'] = 'pizza';
【讨论】:
【参考方案3】:与其尝试将其存储为会话变量,不如检查引用者并检查 /logout/
if(strpos($_SERVER['HTTP_REFERER'], 'logout') !== false)
echo 'You have successfully logged out.';
【讨论】:
【参考方案4】:session_id($session_id_to_destroy);
session_start();
session_destroy();
session_commit();
【讨论】:
请解释你的答案,它的作用,为什么,如何......一些东西,还要注意OP是2011年的以上是关于销毁 php 后启动会话的主要内容,如果未能解决你的问题,请参考以下文章