2016-01-19 5 views
2

Я работаю над проектом на PHP, который не использует какие-либо рамки для PHP. Я родом из Yii фона, и я использовал:Flash-сообщения с сессиями в PHP

Yii::app()->user->setFlash('flash_name', 'Flash value'); 

И проверил с:

Yii::app()->user->hasFlash('flash_name'); 

Чтобы проверить, если он присутствует, и если она существует, и получить значение этого я использовал :

Yii::app()->user->getFlash('flash_name', 'Default Flash value'); 

Пока я писал эти функции set, check и get вспышки:

function set_flash($flash_name, $value) { 
    $_SESSION['flashes'][$flash_name] = $value; 
} 

function has_flash($flash_name) { 
    return isset($_SESSION['flashes'][$flash_name]) ? true : false; 
} 

function get_flash($flash_name, $default_value = null) { 
    if(has_flash($flash_name)) { 
     return $_SESSION['flashes'][$flash_name]; 
    } 

    return $default_value; 
} 

Однако, когда я использую его в моем post.php так:

set_flash('success', true); 

И проверить это в моем index.php так:

<div class="container"> 
    <?php if(has_flash('success') && (get_flash('success') === true)): ?> 
     <div class="alert alert-success"> 
      <h4>Success!</h4> 
      <hr /> 
      <p>You have successfully posted new content on your website. Now you can edit or delete this post.</p> 
     </div> 
    <?php endif; ?> 
</div> 

всякий раз, когда я обновить страницу, сообщение будет по-прежнему появляются там.

Как удалить вспышку после ее использования или вызова?

ответ

2

Добавить новую строку get_flash:

function get_flash($flash_name, $default_value = null) { 
    if(has_flash($flash_name)) { 
     $retVal = $_SESSION['flashes'][$flash_name]; 
     // don't unset before you get the vaue 
     unset($_SESSION['flashes'][$flash_name]); 
     return $retVal; 
    } 

    return $default_value; 
}