PHP - 闪存消息



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

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

闪存消息 允许您在一个页面上创建消息,并在另一个页面上显示一次。要将消息从一个页面传输到另一个页面,您可以使用$_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 {

   // remove existing message with the name
   if (isset($_SESSION[FLASH][$name])) {
      unset($_SESSION[FLASH][$name]);
   }
   // add the message to the session
   $_SESSION[FLASH][$name] = ['message' => $message]; 
}

让我们再编写一个函数,该函数读取消息,将其在浏览器上闪现,并将其从 $_SESSION 中删除。

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

   // get message from the session
   $flash_message = $_SESSION[FLASH][$name];

   // delete the flash message
   unset($_SESSION[FLASH][$name]);

   // display the flash message
   echo format_flash_message($flash_message);
}

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

如果应用程序闪现了多个消息,则可以使用以下示例检索和闪现所有消息:

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

   // get flash messages
   $flash_messages = $_SESSION[FLASH];

   // remove all the flash messages
   unset($_SESSION[FLASH]);

   // show all flash messages
   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);		// display a flash message
   } elseif ($name === '' && $message === '' ) {
      display_all_flash_messages(); 	// display all flash message
   }
}

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

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

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

flash('first');

使用闪存消息的机制通常用于注册页面,以便在用户注册后将用户重定向到登录页面并显示欢迎消息。

广告