I have my own MVC and in my BaseController
i create simple method flashMessage
.
public function flashMessage($name, $value)
{
if(!isset($_SESSION['message'][$name])) {
$_SESSION['message'][$name] = $value;
}
}
This work good but i dont know when to destroy this session. Is good idea to put in __destructor
session_unset($_SESSION['message']);
?
This work good but my message has no lifetime
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');
}
}
}
You remove it on read. A simple example, by making the flash message a 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
}
}