2016-05-20 3 views
1

J'ai mon propre MVC et dans mon BaseController je crée la méthode simple flashMessage.PHP quand enlever le message instantané de la session

public function flashMessage($name, $value) 
{ 
    if(!isset($_SESSION['message'][$name])) { 
     $_SESSION['message'][$name] = $value; 
    } 
} 

Cela fonctionne bien mais je ne sais pas quand détruire cette session. Est-ce une bonne idée de mettre __destructorsession_unset($_SESSION['message']);?

Ce bon de travail, mais mon message n'a pas la vie

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'); 
      } 

     } 
    } 

Répondre

1

Vous l'enlever à lire. Un exemple simple, en faisant du message flash une classe.

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 

    } 
} 
+0

Ouais son travail. Merci @Steve – Ivan

1

Je suggère à la recherche dans l'algorithme déjà mis en œuvre des messages flash.

E.g. dans Yii vous pouvez définir pour supprimer le message flash quand il a été montré:

$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; 
}