我正在處理一個小的自定義CMS並想實現Flash消息。我已經搜索了幾個小時,但我找不到任何表現出我想要的方式。我似乎無法做任何工作。PHP如何實現Flash消息
我希望能夠給一個變量(通過$ _SESSION)傳遞到另一個頁面,並在旁邊的要求,將被刪除。我希望能夠使用keep_flash函數,以防我不希望消息被下一個服務器請求刪除。
任何人都可以給我在正確的方向?我真的無法做任何事情。
謝謝。
編輯:下面是一些代碼,我擺弄。它有點作品。當你第一次訪問該頁面時,它會設置$ _SESSION並且一切正常。但是,如果刷新,現在它會刪除$ _SESSION。如果您再次刷新,則會將其添加回來......等等。因此,如果您要訪問該頁面,請刷新,然後轉到其他頁面,Flash消息不會位於$ _SESSION中。那我該如何解決這個問題?
class flash
{
private $current = array();
private $keep = array();
public function __construct()
{
if (isset($_SESSION['flash'])) {
foreach($_SESSION['flash'] as $k=>$v)
{
$this->current[$k] = $v;
}
}
}
public function __destruct()
{
foreach ($this->current as $k=>$v)
{
if (array_key_exists($k,$this->keep) && $this->keep[$k] == $v) {
// keep flash
$_SESSION['flash'][$k] = $v;
} else {
// delete flash
unset($_SESSION['flash'][$k]);
unset($this->current[$k]);
unset($this->keep[$k]);
}
}
}
public function setFlash($key,$value)
{
$_SESSION['flash'][$key] = $value;
}
public function keepFlash($key)
{
$this->keep[$key] = $this->getFlash($key);
}
public function getFlash($key)
{
if (array_key_exists($key,$this->current)) return $this->current[$key];
return null;
}
}
的一部分。您的解決方案將工作,除了它本身就像使用$ _SESSION。我希望我的課程能夠刪除所有未明確保存的Flash消息。所以,如果你設置使page2.php上page1.php中4點的提示信息,即使你只叫他們中的一個,他們都應該被刪除,如果沒有一個是保持與保持方法。 – CrazeD 2011-04-06 21:34:44
我知道你很久以前就問過這個問題了。但是,這可能是對你有幫助http://mikeeverhart.net/php/session-based-flash-messages/ – 2013-05-28 08:32:40