PHP 何时删除会话闪现消息
PHP when to remove session flash message
我有自己的 MVC,在我的 BaseController
中我创建了简单的方法 flashMessage
。
public function flashMessage($name, $value)
{
if(!isset($_SESSION['message'][$name])) {
$_SESSION['message'][$name] = $value;
}
}
这项工作很好,但我不知道何时销毁此会话。输入 __destructor
session_unset($_SESSION['message']);
是个好主意吗?
这项工作很好,但我的消息没有生命周期
public function authenticate()
{
if(isset($_POST['submit']))
{
$username = $this->inputFilter($_POST['username']);
$password = $this->inputFilter($_POST['password']);
// check if user exist
if(!$this->auth->autheticate($username, $password)) {
$this->flashMessage('error', 'Error: Invalid username or password!');
return $this->redirect('login');
}else {
$this->flashMessage('success', 'Success: Uspešno ste se prijavili na sistem!');
return $this->redirect('home');
}
}
}
我建议查看已经实现的 flash 消息算法。
例如在 Yii 中,您可以设置在显示时删除闪现消息:
$this->setFlash('type', 'message');
$this->showFlash('type');
function showFlash($type) {
$msg = isset($_SESSION['message'][$type]) ? $_SESSION['message'][$type] : null;
if (!is_null($msg)) {
unset($_SESSION['message'][$type]);
}
return $msg;
}
您在阅读时将其删除。
一个简单的例子,通过使 flash 消息成为 class.
class FlashMessage
{
static function create($name, $value)
{
if(!isset($_SESSION['message'][$name])) {
$_SESSION['message'][$name] = $value;
}
}
static function read($name)
{
if(isset($_SESSION['message'][$name])) {
$message = $_SESSION['message'][$name];
unset($_SESSION['message'][$name]);
return $message;
}
//return null, false or throw exception
}
}
我有自己的 MVC,在我的 BaseController
中我创建了简单的方法 flashMessage
。
public function flashMessage($name, $value)
{
if(!isset($_SESSION['message'][$name])) {
$_SESSION['message'][$name] = $value;
}
}
这项工作很好,但我不知道何时销毁此会话。输入 __destructor
session_unset($_SESSION['message']);
是个好主意吗?
这项工作很好,但我的消息没有生命周期
public function authenticate()
{
if(isset($_POST['submit']))
{
$username = $this->inputFilter($_POST['username']);
$password = $this->inputFilter($_POST['password']);
// check if user exist
if(!$this->auth->autheticate($username, $password)) {
$this->flashMessage('error', 'Error: Invalid username or password!');
return $this->redirect('login');
}else {
$this->flashMessage('success', 'Success: Uspešno ste se prijavili na sistem!');
return $this->redirect('home');
}
}
}
我建议查看已经实现的 flash 消息算法。
例如在 Yii 中,您可以设置在显示时删除闪现消息:
$this->setFlash('type', 'message');
$this->showFlash('type');
function showFlash($type) {
$msg = isset($_SESSION['message'][$type]) ? $_SESSION['message'][$type] : null;
if (!is_null($msg)) {
unset($_SESSION['message'][$type]);
}
return $msg;
}
您在阅读时将其删除。 一个简单的例子,通过使 flash 消息成为 class.
class FlashMessage
{
static function create($name, $value)
{
if(!isset($_SESSION['message'][$name])) {
$_SESSION['message'][$name] = $value;
}
}
static function read($name)
{
if(isset($_SESSION['message'][$name])) {
$message = $_SESSION['message'][$name];
unset($_SESSION['message'][$name]);
return $message;
}
//return null, false or throw exception
}
}