我有一个PHP网站,我希望当用户登录到他的个人资料时,他会在仪表板上看到一条消息,如欢迎“”。现在这里的转折点是我希望只有当用户刚刚使用续会话登录时才会显示此消息。
在这种情况下可以做些什么?请帮忙......
由于
答案 0 :(得分:4)
将变量存储在会话中。您的信息中心页面上的条件类似于:
<?php
if( isset($_SESSION['welcome_message']) )
{
echo $_SESSION['welcome_message'];
unset($_SESSION['welcome_message']);
}
?>
因此,它不会在后续页面点击中显示。
这通常被称为“闪存”消息。
答案 1 :(得分:3)
您可以在$_SESSION
数组中使用标记。
<?php
if (!isset($_SESSION['display_greeting'])){
echo "Hello " . $name;
$_SESSION['display_greeting']=1;
}
?>
答案 2 :(得分:2)
我认为您只希望此消息能够一次显示,例如在他们第一次登录时,您需要:
message_displayed
为false,则显示消息message_displayed
设置为true 现在将在数据库中设置后续日志。仅在会话中执行此操作意味着如果他们删除Cookie或从其他计算机登录,它可能会再次显示。
修改强> 的
再想一想,这是不可持续的。真的,你需要一个通知系统。
通过这种方式,您可以只显示一次通知,而不是依赖于用户表中的单个数据库列。您也可以为通知设置不同的触发器,例如它会被显示一次并被删除,或者只有在采取特定操作(例如接受/拒绝朋友请求)时才会被删除。
答案 3 :(得分:2)
这是框架的一个共同特征。您的想法是在会话中存储消息,然后在显示后删除它。一个基本的例子是我:
session_start()
$_SESSION['message'] = "thanks for logging in";
header('Location: index.php');
然后在你的索引中。
if ($_SESSION['message'])
{
echo $_SESSION['message'];
unset($_SESSION['message'];
}
这些被称为flash消息,并且已经存在实现。查看:https://github.com/jimmiw/php-flash-message
答案 4 :(得分:0)
您可以创建一个log_report(或名称)表,在该表中输入用户登录时但在输入之前将该时间放入会话并将时间与现有记录进行比较,如果该记录不存在则显示该消息。并在页面加载时始终比较该会话时间。如果现有不显示否则显示....