2015-08-14 85 views
1

我试图在PHP中创建一个基于会话的闪光消息:PHP会话基于Flash的消息

在register.php页面,我设置会话如下:

$_SESSION['flash'] = 'Registered'; 

然后,在将用户重定向到主页后,我打印了闪存消息:

if (isset($_SESSION['flash'])) { 
    echo $_SESSION['flash']; 
    unset($_SESSION['flash']); 
} 

会话在两个页面中都启动。 问题是: 只有当我删除未设置的功能,然后才会打印消息,我才会在主页中看到闪光消息。

+0

也许正在执行两次的youre首页,让您在第一次执行运行删除的信息,然后有什么可打印的第二时间。 –

+0

你可以把更多的代码plz ..需要看你如何重定向。 –

+0

我确定主页是一次执行的。否则,在重定向之后,我正好在设置会话之后使用标题('Location:Home.php')。但是,有关更多信息,我打印邮件的代码位于文件Message.php中,然后将此文件包含在另一个文件中,该文件包含最后一个包含在每个页面中的HTML标头。经过几个小时的测试后,我发现当我将Message.php文件从头文件直接移动到主页时,问题就解决了,但这并不是一个好的做法,因为我想要所有页面中的Message.php文件,所以有任何想法吗 ? –

回答

1

我解决我的问题通过重定向用户逃避注册页面执行后增加出口,所以会不会取消设置在下一页中使用它之前在当前页面中。

0

请注意,session_unset只是清除sesison的使用。会话仍在用户计算机上。请注意,通过使用session_unset,该变量仍然存在。

然而,与session_destroy一起使用session_unset是实际清除数据的更有效方法。正如上面的例子说明,这个作品非常好,跨浏览器:

<?php 
session_unset(); 
session_destroy(); 
?> 
+0

感谢您的回答,但我不认为您了解问题,确切发生的情况是:即使在使用之前会话也未设置,因此我无法在页面中看到消息。但是,当我删除未设置时,一旦刷新页面,我总是会收到消息,并希望消失。 –

1

我为这类问题写了一个库:https://github.com/tamtamchik/simple-flash

一旦你安装,你可以这样做:

// put message not session 
flash('Some error message', 'error'); 

// print it after redirect 
echo flash()->display(); 

它会产生Bootstrap友好警报消息。

Example