我正在处理一个小的自定义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