PHP 基于会话的快闪消息
PHP Session-Based flash message
我正在尝试在 PHP 中创建基于会话的即显消息:
在register.php页面,我设置session如下:
$_SESSION['flash'] = 'Registered';
然后,在将用户重定向到主页后,我打印了闪现消息:
if (isset($_SESSION['flash'])) {
echo $_SESSION['flash'];
unset($_SESSION['flash']);
}
会话在两个页面中启动。
问题是:
我只有去掉unset功能才会在首页看到闪现信息,然后一直打印出来。
请注意,session_unset 只是清除了 sesison 以供使用。会话仍在用户计算机上。请注意,通过使用 session_unset,变量仍然存在。
然而,将 session_unset 与 session_destroy 结合使用,是一种更有效的实际清除数据的方法。如上例所述,跨浏览器效果很好:
<?php
session_unset();
session_destroy();
?>
我刚刚解决了我的问题,方法是在重定向用户后添加退出以退出注册页面的执行,因此在下一页使用会话之前不会在当前页面中取消设置会话。
我专门为这类问题编写了一个库:https://github.com/tamtamchik/simple-flash。
安装完成后,您可以执行以下操作:
// put message not session
flash('Some error message', 'error');
// print it after redirect
echo flash()->display();
它将生成 Bootstrap 友好的警报消息。
我正在尝试在 PHP 中创建基于会话的即显消息:
在register.php页面,我设置session如下:
$_SESSION['flash'] = 'Registered';
然后,在将用户重定向到主页后,我打印了闪现消息:
if (isset($_SESSION['flash'])) {
echo $_SESSION['flash'];
unset($_SESSION['flash']);
}
会话在两个页面中启动。 问题是: 我只有去掉unset功能才会在首页看到闪现信息,然后一直打印出来。
请注意,session_unset 只是清除了 sesison 以供使用。会话仍在用户计算机上。请注意,通过使用 session_unset,变量仍然存在。
然而,将 session_unset 与 session_destroy 结合使用,是一种更有效的实际清除数据的方法。如上例所述,跨浏览器效果很好:
<?php
session_unset();
session_destroy();
?>
我刚刚解决了我的问题,方法是在重定向用户后添加退出以退出注册页面的执行,因此在下一页使用会话之前不会在当前页面中取消设置会话。
我专门为这类问题编写了一个库:https://github.com/tamtamchik/simple-flash。
安装完成后,您可以执行以下操作:
// put message not session
flash('Some error message', 'error');
// print it after redirect
echo flash()->display();
它将生成 Bootstrap 友好的警报消息。