簡體   English   中英

PHP何時刪除會話Flash消息

[英]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中,您可以設置在顯示時刪除Flash消息:

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

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM