Php 简明教程

PHP - Flash Messages

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

在 PHP Web 应用程序中,我们可以使用会话数据不定期地针对特定操作、通知或警告等内容发出成功或失败的闪存消息,以便向用户随时通报相关信息。

flash message 使您能在一页上创建消息,然后在另一页上显示一次此消息。如要从一页向另一页传输消息,请使用 $_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 创建、设置格式并闪现消息

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() function

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

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

flash('first');

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