【发布时间】:2011-04-06 02:31:23
【问题描述】:
我正在开发一个小型自定义 CMS,并希望实现 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;
}
}
【问题讨论】:
标签: php