如何在PHP中登录网页时显示消息?

时间:2011-02-02 11:19:58

标签: php session

我有一个PHP网站,我希望当用户登录到他的个人资料时,他会在仪表板上看到一条消息,如欢迎“”。现在这里的转折点是我希望只有当用户刚刚使用续会话登录时才会显示此消息。

在这种情况下可以做些什么?请帮忙......

由于

5 个答案:

答案 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)

我认为您只希望此消息能够一次显示,例如在他们第一次登录时,您需要:

  1. 如果数据库中的message_displayed为false,则显示消息
  2. 将针对用户的数据库中的message_displayed设置为true
  3. 现在将在数据库中设置后续日志。仅在会话中执行此操作意味着如果他们删除Cookie或从其他计算机登录,它可能会再次显示。

    修改

    再想一想,这是不可持续的。真的,你需要一个通知系统。

    1. 使用用户ID
    2. 在自己的表格中生成通知
    3. 当用户登录时,检查通知表
    4. 如果存在通知,则会显示并标记为已读或已删除
    5. 通过这种方式,您可以只显示一次通知,而不是依赖于用户表中的单个数据库列。您也可以为通知设置不同的触发器,例如它会被显示一次并被删除,或者只有在采取特定操作(例如接受/拒绝朋友请求)时才会被删除。

答案 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(或名称)表,在该表中输入用户登录时但在输入之前将该时间放入会话并将时间与现有记录进行比较,如果该记录不存在则显示该消息。并在页面加载时始终比较该会话时间。如果现有不显示否则显示....