PHP - 消息闪烁(flash)


PHP Web 应用程序的 消息闪烁(Flash)是指在浏览器窗口上弹出某些消息以使用户接收应用程序反馈的技术。能够为用户提供对其交互的有意义的反馈是一项重要的设计原则,它可以提供更好的用户体验。

在 PHP Web 应用程序中,我们可以使用会话数据不时闪现有关某个操作成功或失败的消息、通知或警告等,以使用户了解情况。

闪烁(Flash)消息允许您在一个页面上创建消息,并在另一个页面上显示一次。要将消息从一个页面传输到另一个页面,请使用 $_SESSION 超全局变量。

首先,您将变量添加到 $_SESSION 数组中,如下所示 -


<?php
   session_start();
   $_SESSION['flash_message'] = "Hello World";
?>

稍后,导航到另一个页面,从 $_SESSION 变量中检索闪烁的消息并将其分配给变量。然后,您可以显示该消息,然后从 $_SESSION 删除该消息 -


<?php
   session_start();
   if(isset($_SESSION['flash_message'])) {
      $message = $_SESSION['flash_message'];
      unset($_SESSION['flash_message']);
      echo $message;
   }
?>

为了概括处理 闪烁消息的基本思想,我们将编写一个函数,将消息添加到 $_SESSION


session_start();
function create_flash_message(string $name, string $message): void {

   // 删除同名现有邮件
   if (isset($_SESSION[FLASH][$name])) {
      unset($_SESSION[FLASH][$name]);
   }
   // 将消息添加到会话中
   $_SESSION[FLASH][$name] = ['message' => $message]; 
}

我们还让我们有另一个函数,它读回一条消息,在浏览器上闪烁它,并将其从 $_SESSION 中删除。


function display_flash_message(string $name): void {
   if (!isset($_SESSION[FLASH][$name])) {
      return;
   }

   // 从Session中获取消息
   $flash_message = $_SESSION[FLASH][$name];

   // 删除闪烁消息
   unset($_SESSION[FLASH][$name]);

   // 显示闪烁信息
   echo format_flash_message($flash_message);
}

format_flash_message() 函数使用适当的 CSS 规则将所需的格式应用于获取的字符串。

如果应用程序已刷写的消息多于消息,则可以使用以下示例检索和刷写所有消息 -


function display_all_flash_messages(): void {
   if (!isset($_SESSION[FLASH])) {
      return;
   }

   // 获取flash消息
   $flash_messages = $_SESSION[FLASH];

   // 删除所有flash消息
   unset($_SESSION[FLASH]);

   // 显示所有flash消息
   foreach ($flash_messages as $flash_message) {
      echo format_flash_message($flash_message);
   }
}

使用以下 flash() 函数创建、格式化和闪烁消息


function flash(string $name = '', string $message = ''): void {
   if ($name !== '' && $message !== '') {
      create_flash_message($name, $message);
   } 
   elseif ($name !== '' && $message === '') {
      display_flash_message($name);        // 显示闪烁消息
   } elseif ($name === '' && $message === '' ) {
      display_all_flash_messages();     // 显示所有闪烁信息
   }
}

要实现上述方法,请在第一页上调用 flash() 函数。


 flash('first', 'Hello World');

导航到另一个页面并调用 flash() 函数以检索和显示消息 -


 flash('first');

注册页面上通常采用使用 Flash 消息的机制,在用户注册后通过欢迎消息将用户重定向到登录页面。