Flash消息不会消失PHP

时间:2017-08-30 12:38:31

标签: php session flash-message

我正在使用此Flash Messages Script进行简单的重定向和Flash消息系统。 在我的apache localhost上一切正常,但是一旦我将它上传到服务器(也是apache),它就无法正常工作。它设置会话并正确显示消息,但之后不会取消消息。现在我的网站上有一大堆“Flash消息”,除非你关闭浏览器以强行取消所有会话,否则它们会越来越多。

我已经阅读过一千次这样的文档,并且还在服务器上的Flash Messages脚本中搜索了任何错误。我找不到任何。

也许你们可以帮助我。我将部署我的网站的主机是strato.com。

编辑:我在浏览器信息中找到了一个名为PHPSESSID的cookie。也许这可能会有所帮助。

构造

    public function __construct()
{

    // Generate a unique ID for this user and session
    $this->msgId = sha1(uniqid());

    // Create session array to hold our messages if it doesn't already exist
    if (!array_key_exists('flash_messages', $_SESSION)) $_SESSION['flash_messages'] = [];

}

清除会话功能:

    protected function clear($types=[])
{
    if ((is_array($types) && empty($types)) || is_null($types) || !$types) {
        unset($_SESSION['flash_messages']);
    } elseif (!is_array($types)) {
        $types = [$types];
    }

    foreach ($types as $type) {
        unset($_SESSION['flash_messages'][$type]);
    }

    return $this;
}

添加会话:

    public function add($message, $type=self::defaultType, $redirectUrl=null, $sticky=false)
{

    // Make sure a message and valid type was passed
    if (!isset($message[0])) return false;
    if (strlen(trim($type)) > 1) $type = strtolower($type[0]);
    if (!array_key_exists($type, $this->msgTypes)) $type = $this->defaultType;

    // Add the message to the session data
    if (!array_key_exists( $type, $_SESSION['flash_messages'] )) $_SESSION['flash_messages'][$type] = array();
    $_SESSION['flash_messages'][$type][] = ['sticky' => $sticky, 'message' => $message];

    // Handle the redirect if needed
    if (!is_null($redirectUrl)) $this->redirectUrl = $redirectUrl;
    $this->doRedirect();

    return $this;
}

1 个答案:

答案 0 :(得分:0)

我修好了。这是因为php.ini文件中的PHP 7.1发生了变化。一旦我将PHP版本降级到PHP 7.0,一切都恢复正常。

我希望这会对很多人有所帮助。至少你现在有了一些起点。