{"id":2402,"date":"2021-08-02T09:59:54","date_gmt":"2021-08-02T09:59:54","guid":{"rendered":"https:\/\/phptutorial.net\/?page_id=2402"},"modified":"2025-04-06T09:50:35","modified_gmt":"2025-04-06T09:50:35","slug":"php-flash-messages","status":"publish","type":"page","link":"https:\/\/www.phptutorial.net\/php-tutorial\/php-flash-messages\/","title":{"rendered":"PHP Flash Messages"},"content":{"rendered":"\n<p><strong>Summary<\/strong>: in this tutorial, you&#8217;ll learn about the PHP flash messages and define a reusable <code>flash()<\/code> function to manage the flash messages effectively.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='introduction-to-the-php-flash-messages'>Introduction to the PHP flash messages <a href=\"#introduction-to-the-php-flash-messages\" class=\"anchor\" id=\"introduction-to-the-php-flash-messages\" title=\"Anchor for Introduction to the PHP flash messages\">#<\/a><\/h2>\n\n\n\n<p>A flash message allows you to create a message on one page and display it once on another page. To transfer a message from one page to another, you use the <code><a href=\"https:\/\/phptutorial.net\/php-tutorial\/php-session\/\">$_SESSION<\/a><\/code> superglobal variable.<\/p>\n\n\n\n<p>For example, you can add a message to the <code>$_SESSION<\/code> on the first page:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n\nsession_start();\n\n$_SESSION&#91;<span class=\"hljs-string\">'flash_message'<\/span>] = <span class=\"hljs-string\">\"I'm a flash message';<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Later, on another page, you can get the flash message from the <code>$_SESSION<\/code> variable and assign it to a variable. Then, you  delete the message from the <code>$_SESSION<\/code> and display the message:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n\nsession_start();\n\n<span class=\"hljs-keyword\">if<\/span>(<span class=\"hljs-keyword\">isset<\/span>($_SESSION&#91;<span class=\"hljs-string\">'flash_message'<\/span>])) {\n    $message = $_SESSION&#91;<span class=\"hljs-string\">'flash_message'<\/span>];\n    <span class=\"hljs-keyword\">unset<\/span>($_SESSION&#91;<span class=\"hljs-string\">'flash_message'<\/span>]);\n    <span class=\"hljs-keyword\">echo<\/span> $message;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This is a simple flash message example.<\/p>\n\n\n\n<p>In practice, a flash message has a name (or an ID) for reference later. Also, a flash message has a type such as error, success, information, and warning. The message type allows you to make a specific style for the message<\/p>\n\n\n\n<p>In the following section, we&#8217;ll define a set of functions that do the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Create a flash message with a name.<\/li><li>Format a flash message.<\/li><li>Display a flash message specified by a name.<\/li><li>Display all the flash messages.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id='create-a-flash-message'>Create a flash message <a href=\"#create-a-flash-message\" class=\"anchor\" id=\"create-a-flash-message\" title=\"Anchor for Create a flash message\">#<\/a><\/h2>\n\n\n\n<p>First, define a <a href=\"https:\/\/phptutorial.net\/php-tutorial\/php-constants\/\">constant<\/a> as a key for all the flash messages:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">const<\/span> FLASH = <span class=\"hljs-string\">'FLASH_MESSAGES'<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Second, define <a href=\"https:\/\/phptutorial.net\/php-tutorial\/php-constants\/\">constants<\/a> that define the type of flash messages including error, information, warning, and success:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">const<\/span> FLASH_ERROR = <span class=\"hljs-string\">'error'<\/span>;\n<span class=\"hljs-keyword\">const<\/span> FLASH_WARNING = <span class=\"hljs-string\">'warning'<\/span>;\n<span class=\"hljs-keyword\">const<\/span> FLASH_INFO = <span class=\"hljs-string\">'info'<\/span>;\n<span class=\"hljs-keyword\">const<\/span> FLASH_SUCCESS = <span class=\"hljs-string\">'success'<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Third, define a function that creates a flash message which has a name, a message, and a type:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n\n<span class=\"hljs-comment\">\/**\n* Create a flash message \n* \n* <span class=\"hljs-doctag\">@param<\/span> string $name\n* <span class=\"hljs-doctag\">@param<\/span> string $message\n* <span class=\"hljs-doctag\">@param<\/span> string $type\n* <span class=\"hljs-doctag\">@return<\/span> void\n*\/<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">create_flash_message<\/span><span class=\"hljs-params\">(string $name, string $message, string $type)<\/span>: <span class=\"hljs-title\">void<\/span>\n<\/span>{\n    <span class=\"hljs-comment\">\/\/ remove existing message with the name<\/span>\n    <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-keyword\">isset<\/span>($_SESSION&#91;FLASH]&#91;$name])) {\n        <span class=\"hljs-keyword\">unset<\/span>($_SESSION&#91;FLASH]&#91;$name]);\n    }\n    <span class=\"hljs-comment\">\/\/ add the message to the session<\/span>\n    $_SESSION&#91;FLASH]&#91;$name] = &#91;<span class=\"hljs-string\">'message'<\/span> =&gt; $message, <span class=\"hljs-string\">'type'<\/span> =&gt; $type];\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='format-a-flash-message'>Format a flash message <a href=\"#format-a-flash-message\" class=\"anchor\" id=\"format-a-flash-message\" title=\"Anchor for Format a flash message\">#<\/a><\/h2>\n\n\n\n<p>The following <code>format_flash_message()<\/code> function formats a flash message:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">\/**\n * Format a flash message\n *\n * <span class=\"hljs-doctag\">@param<\/span> array $flash_message\n * <span class=\"hljs-doctag\">@return<\/span> string\n *\/<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">format_flash_message<\/span><span class=\"hljs-params\">(array $flash_message)<\/span>: <span class=\"hljs-title\">string<\/span>\n<\/span>{\n    <span class=\"hljs-keyword\">return<\/span> sprintf(<span class=\"hljs-string\">'&lt;div class=\"alert alert-%s\"&gt;%s&lt;\/div&gt;'<\/span>,\n        $flash_message&#91;<span class=\"hljs-string\">'type'<\/span>],\n        $flash_message&#91;<span class=\"hljs-string\">'message'<\/span>]\n    );\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this function, we use the following HTML with the class <code>alert<\/code> and <code>alert-$type<\/code> to format the message. The message type can be an error, info, warning, and success.<\/p>\n\n\n\n<p>The following example shows an error message:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"alert alert-error\"<\/span>&gt;<\/span>\n    This is an error!\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='display-a-flash-message'>Display a flash message <a href=\"#display-a-flash-message\" class=\"anchor\" id=\"display-a-flash-message\" title=\"Anchor for Display a flash message\">#<\/a><\/h2>\n\n\n\n<p>To display a flash message by a name, you check if the message name exists in the <code>$_SESSION[FLASH]<\/code> variable. If so, you get the flash message in the <code>$_SESSION['FLASH']<\/code>, remove it from the <code>$_SESSION['FLASH']<\/code>, and display the flash message:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n\n<span class=\"hljs-comment\">\/**\n* Display a flash message\n*\n* <span class=\"hljs-doctag\">@param<\/span> string $name\n* <span class=\"hljs-doctag\">@return<\/span> void\n*\/<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">display_flash_message<\/span><span class=\"hljs-params\">(string $name)<\/span>: <span class=\"hljs-title\">void<\/span>\n<\/span>{\n    <span class=\"hljs-keyword\">if<\/span> (!<span class=\"hljs-keyword\">isset<\/span>($_SESSION&#91;FLASH]&#91;$name])) {\n        <span class=\"hljs-keyword\">return<\/span>;\n    }\n\n    <span class=\"hljs-comment\">\/\/ get message from the session<\/span>\n    $flash_message = $_SESSION&#91;FLASH]&#91;$name];\n\n    <span class=\"hljs-comment\">\/\/ delete the flash message<\/span>\n    <span class=\"hljs-keyword\">unset<\/span>($_SESSION&#91;FLASH]&#91;$name]);\n\n    <span class=\"hljs-comment\">\/\/ display the flash message<\/span>\n    <span class=\"hljs-keyword\">echo<\/span> format_flash_message($flash_message);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='display-all-flash-messages'>Display all flash messages <a href=\"#display-all-flash-messages\" class=\"anchor\" id=\"display-all-flash-messages\" title=\"Anchor for Display all flash messages\">#<\/a><\/h2>\n\n\n\n<p>The following function displays all flash messages from the <code>$_SESSION['FLASH']<\/code> variable:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n\n<span class=\"hljs-comment\">\/**\n* Display all flash messages\n*\n* <span class=\"hljs-doctag\">@return<\/span> void\n*\/<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">display_all_flash_messages<\/span><span class=\"hljs-params\">()<\/span>: <span class=\"hljs-title\">void<\/span>\n<\/span>{\n    <span class=\"hljs-keyword\">if<\/span> (!<span class=\"hljs-keyword\">isset<\/span>($_SESSION&#91;FLASH])) {\n        <span class=\"hljs-keyword\">return<\/span>;\n    }\n\n    <span class=\"hljs-comment\">\/\/ get flash messages<\/span>\n    $flash_messages = $_SESSION&#91;FLASH];\n\n    <span class=\"hljs-comment\">\/\/ remove all the flash messages<\/span>\n    <span class=\"hljs-keyword\">unset<\/span>($_SESSION&#91;FLASH]);\n\n    <span class=\"hljs-comment\">\/\/ show all flash messages<\/span>\n    <span class=\"hljs-keyword\">foreach<\/span> ($flash_messages <span class=\"hljs-keyword\">as<\/span> $flash_message) {\n        <span class=\"hljs-keyword\">echo<\/span> format_flash_message($flash_message);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='define-the-flash-function'>Define the flash() function <a href=\"#define-the-flash-function\" class=\"anchor\" id=\"define-the-flash-function\" title=\"Anchor for Define the flash() function\">#<\/a><\/h2>\n\n\n\n<p>It would be more convenient if we define a single <code>flash()<\/code> function that:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Create a flash message<\/li><li>Display a flash message<\/li><li>Display all flash messages<\/li><\/ul>\n\n\n\n<p>The following <code>flash()<\/code> function reuses the above functions:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n\n<span class=\"hljs-comment\">\/**\n* Flash a message\n*\n* <span class=\"hljs-doctag\">@param<\/span> string $name\n* <span class=\"hljs-doctag\">@param<\/span> string $message\n* <span class=\"hljs-doctag\">@param<\/span> string $type (error, warning, info, success)\n* <span class=\"hljs-doctag\">@return<\/span> void\n*\/<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">flash<\/span><span class=\"hljs-params\">(string $name = <span class=\"hljs-string\">''<\/span>, string $message = <span class=\"hljs-string\">''<\/span>, string $type = <span class=\"hljs-string\">''<\/span>)<\/span>: <span class=\"hljs-title\">void<\/span>\n<\/span>{\n    <span class=\"hljs-keyword\">if<\/span> ($name !== <span class=\"hljs-string\">''<\/span> &amp;&amp; $message !== <span class=\"hljs-string\">''<\/span> &amp;&amp; $type !== <span class=\"hljs-string\">''<\/span>) {\n        create_flash_message($name, $message, $type);\n    } <span class=\"hljs-keyword\">elseif<\/span> ($name !== <span class=\"hljs-string\">''<\/span> &amp;&amp; $message === <span class=\"hljs-string\">''<\/span> &amp;&amp; $type === <span class=\"hljs-string\">''<\/span>) {\n        display_flash_message($name);\n    } <span class=\"hljs-keyword\">elseif<\/span> ($name === <span class=\"hljs-string\">''<\/span> &amp;&amp; $message === <span class=\"hljs-string\">''<\/span> &amp;&amp; $type === <span class=\"hljs-string\">''<\/span>) {\n        display_all_flash_messages();\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>To create a flash message, you pass three arguments: <code>name<\/code>, <code>message<\/code>, and <code>type<\/code> to the <code>flash()<\/code> function like this:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">flash(<span class=\"hljs-string\">'greeting'<\/span>, <span class=\"hljs-string\">'Hi there'<\/span>, FLASH_INFO);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>To display a flash message by a <code>name<\/code>, you need to pass a <code>name<\/code> to the <code>flash()<\/code> function:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">flash(<span class=\"hljs-string\">'greeting'<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>To display all flash messages, you don&#8217;t pass any arguments to the <code>flash()<\/code> function:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">flash();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='put-it-all-together'>Put it all together <a href=\"#put-it-all-together\" class=\"anchor\" id=\"put-it-all-together\" title=\"Anchor for Put it all together\">#<\/a><\/h2>\n\n\n\n<p>The following places all the functions in the flash.php file:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n\n<span class=\"hljs-keyword\">const<\/span> FLASH = <span class=\"hljs-string\">'FLASH_MESSAGES'<\/span>;\n\n<span class=\"hljs-keyword\">const<\/span> FLASH_ERROR = <span class=\"hljs-string\">'error'<\/span>;\n<span class=\"hljs-keyword\">const<\/span> FLASH_WARNING = <span class=\"hljs-string\">'warning'<\/span>;\n<span class=\"hljs-keyword\">const<\/span> FLASH_INFO = <span class=\"hljs-string\">'info'<\/span>;\n<span class=\"hljs-keyword\">const<\/span> FLASH_SUCCESS = <span class=\"hljs-string\">'success'<\/span>;\n\n<span class=\"hljs-comment\">\/**\n * Create a flash message\n *\n * <span class=\"hljs-doctag\">@param<\/span> string $name\n * <span class=\"hljs-doctag\">@param<\/span> string $message\n * <span class=\"hljs-doctag\">@param<\/span> string $type\n * <span class=\"hljs-doctag\">@return<\/span> void\n *\/<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">create_flash_message<\/span><span class=\"hljs-params\">(string $name, string $message, string $type)<\/span>: <span class=\"hljs-title\">void<\/span>\n<\/span>{\n    <span class=\"hljs-comment\">\/\/ remove existing message with the name<\/span>\n    <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-keyword\">isset<\/span>($_SESSION&#91;FLASH]&#91;$name])) {\n        <span class=\"hljs-keyword\">unset<\/span>($_SESSION&#91;FLASH]&#91;$name]);\n    }\n    <span class=\"hljs-comment\">\/\/ add the message to the session<\/span>\n    $_SESSION&#91;FLASH]&#91;$name] = &#91;<span class=\"hljs-string\">'message'<\/span> =&gt; $message, <span class=\"hljs-string\">'type'<\/span> =&gt; $type];\n}\n\n\n<span class=\"hljs-comment\">\/**\n * Format a flash message\n *\n * <span class=\"hljs-doctag\">@param<\/span> array $flash_message\n * <span class=\"hljs-doctag\">@return<\/span> string\n *\/<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">format_flash_message<\/span><span class=\"hljs-params\">(array $flash_message)<\/span>: <span class=\"hljs-title\">string<\/span>\n<\/span>{\n    <span class=\"hljs-keyword\">return<\/span> sprintf(<span class=\"hljs-string\">'&lt;div class=\"alert alert-%s\"&gt;%s&lt;\/div&gt;'<\/span>,\n        $flash_message&#91;<span class=\"hljs-string\">'type'<\/span>],\n        $flash_message&#91;<span class=\"hljs-string\">'message'<\/span>]\n    );\n}\n\n<span class=\"hljs-comment\">\/**\n * Display a flash message\n *\n * <span class=\"hljs-doctag\">@param<\/span> string $name\n * <span class=\"hljs-doctag\">@return<\/span> void\n *\/<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">display_flash_message<\/span><span class=\"hljs-params\">(string $name)<\/span>: <span class=\"hljs-title\">void<\/span>\n<\/span>{\n    <span class=\"hljs-keyword\">if<\/span> (!<span class=\"hljs-keyword\">isset<\/span>($_SESSION&#91;FLASH]&#91;$name])) {\n        <span class=\"hljs-keyword\">return<\/span>;\n    }\n\n    <span class=\"hljs-comment\">\/\/ get message from the session<\/span>\n    $flash_message = $_SESSION&#91;FLASH]&#91;$name];\n\n    <span class=\"hljs-comment\">\/\/ delete the flash message<\/span>\n    <span class=\"hljs-keyword\">unset<\/span>($_SESSION&#91;FLASH]&#91;$name]);\n\n    <span class=\"hljs-comment\">\/\/ display the flash message<\/span>\n    <span class=\"hljs-keyword\">echo<\/span> format_flash_message($flash_message);\n}\n\n<span class=\"hljs-comment\">\/**\n * Display all flash messages\n *\n * <span class=\"hljs-doctag\">@return<\/span> void\n *\/<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">display_all_flash_messages<\/span><span class=\"hljs-params\">()<\/span>: <span class=\"hljs-title\">void<\/span>\n<\/span>{\n    <span class=\"hljs-keyword\">if<\/span> (!<span class=\"hljs-keyword\">isset<\/span>($_SESSION&#91;FLASH])) {\n        <span class=\"hljs-keyword\">return<\/span>;\n    }\n\n    <span class=\"hljs-comment\">\/\/ get flash messages<\/span>\n    $flash_messages = $_SESSION&#91;FLASH];\n\n    <span class=\"hljs-comment\">\/\/ remove all the flash messages<\/span>\n    <span class=\"hljs-keyword\">unset<\/span>($_SESSION&#91;FLASH]);\n\n    <span class=\"hljs-comment\">\/\/ show all flash messages<\/span>\n    <span class=\"hljs-keyword\">foreach<\/span> ($flash_messages <span class=\"hljs-keyword\">as<\/span> $flash_message) {\n        <span class=\"hljs-keyword\">echo<\/span> format_flash_message($flash_message);\n    }\n}\n\n<span class=\"hljs-comment\">\/**\n * Flash a message\n *\n * <span class=\"hljs-doctag\">@param<\/span> string $name\n * <span class=\"hljs-doctag\">@param<\/span> string $message\n * <span class=\"hljs-doctag\">@param<\/span> string $type (error, warning, info, success)\n * <span class=\"hljs-doctag\">@return<\/span> void\n *\/<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">flash<\/span><span class=\"hljs-params\">(string $name = <span class=\"hljs-string\">''<\/span>, string $message = <span class=\"hljs-string\">''<\/span>, string $type = <span class=\"hljs-string\">''<\/span>)<\/span>: <span class=\"hljs-title\">void<\/span>\n<\/span>{\n    <span class=\"hljs-keyword\">if<\/span> ($name !== <span class=\"hljs-string\">''<\/span> &amp;&amp; $message !== <span class=\"hljs-string\">''<\/span> &amp;&amp; $type !== <span class=\"hljs-string\">''<\/span>) {\n        <span class=\"hljs-comment\">\/\/ create a flash message<\/span>\n        create_flash_message($name, $message, $type);\n    } <span class=\"hljs-keyword\">elseif<\/span> ($name !== <span class=\"hljs-string\">''<\/span> &amp;&amp; $message === <span class=\"hljs-string\">''<\/span> &amp;&amp; $type === <span class=\"hljs-string\">''<\/span>) {\n        <span class=\"hljs-comment\">\/\/ display a flash message<\/span>\n        display_flash_message($name);\n    } <span class=\"hljs-keyword\">elseif<\/span> ($name === <span class=\"hljs-string\">''<\/span> &amp;&amp; $message === <span class=\"hljs-string\">''<\/span> &amp;&amp; $type === <span class=\"hljs-string\">''<\/span>) {\n        <span class=\"hljs-comment\">\/\/ display all flash message<\/span>\n        display_all_flash_messages();\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='a-flash-message-example'>A flash message example <a href=\"#a-flash-message-example\" class=\"anchor\" id=\"a-flash-message-example\" title=\"Anchor for A flash message example\">#<\/a><\/h2>\n\n\n\n<p>First, create the following directory and file structure:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"plaintext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">\u251c\u2500\u2500 inc\n|  \u251c\u2500\u2500 flash.php\n|  \u251c\u2500\u2500 footer.php\n|  \u2514\u2500\u2500 header.php\n\u251c\u2500\u2500 page1.php\n\u2514\u2500\u2500 page2.php<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">plaintext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Second, place all the functions above in the <code>flash.php<\/code> file.<\/p>\n\n\n\n<p>Third, add the following code to the <code>header.php<\/code> file. The <code>header.php<\/code> links to the <code>style.css<\/code> file in the <code>css<\/code> folder:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-meta\">&lt;!DOCTYPE <span class=\"hljs-meta-keyword\">html<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">html<\/span> <span class=\"hljs-attr\">lang<\/span>=<span class=\"hljs-string\">\"en\"<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">head<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">meta<\/span> <span class=\"hljs-attr\">charset<\/span>=<span class=\"hljs-string\">\"UTF-8\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">meta<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"viewport\"<\/span> <span class=\"hljs-attr\">content<\/span>=<span class=\"hljs-string\">\"width=device-width, initial-scale=1.0\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">link<\/span> <span class=\"hljs-attr\">rel<\/span>=<span class=\"hljs-string\">\"stylesheet\"<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\"https:\/\/phptutorial.net\/app\/css\/style.css\"<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">title<\/span>&gt;<\/span>PHP Flash Message<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">title<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">head<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">body<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Fourth, add the following HTML to the <code>footer.php<\/code> file:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">body<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">html<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Fifth, create a flash message on the <code>page1.php<\/code> file by calling the <code>flash()<\/code> function:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-18\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n\nsession_start();\n\n<span class=\"hljs-keyword\">require<\/span> <span class=\"hljs-keyword\">__DIR__<\/span> . <span class=\"hljs-string\">'\/inc\/flash.php'<\/span>;\n<span class=\"hljs-keyword\">require<\/span> <span class=\"hljs-keyword\">__DIR__<\/span> . <span class=\"hljs-string\">'\/inc\/header.php'<\/span>;\n\nflash(<span class=\"hljs-string\">'greeting'<\/span>, <span class=\"hljs-string\">'Hi there'<\/span>, FLASH_INFO);\n\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'&lt;a href=\"page2.php\" title=\"Go To Page 2\"&gt;Go To Page 2&lt;\/a&gt;'<\/span>;\n\n<span class=\"hljs-keyword\">require<\/span> <span class=\"hljs-keyword\">__DIR__<\/span> . <span class=\"hljs-string\">'\/inc\/footer.php'<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-18\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The <code>page1.php<\/code> file has a link to the <code>page2.php<\/code>.<\/p>\n\n\n\n<p>Finally, show the greeting message on the <code>page2.php<\/code> file by calling the <code>flash()<\/code> function and pass the name into it:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-19\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-meta\">&lt;?php<\/span>\n\nsession_start();\n\n<span class=\"hljs-keyword\">require<\/span> <span class=\"hljs-keyword\">__DIR__<\/span>  . <span class=\"hljs-string\">'\/inc\/flash.php'<\/span>;\n<span class=\"hljs-keyword\">require<\/span> <span class=\"hljs-keyword\">__DIR__<\/span> . <span class=\"hljs-string\">'\/inc\/header.php'<\/span>;\n\nflash(<span class=\"hljs-string\">'greeting'<\/span>);\n\n<span class=\"hljs-keyword\">require<\/span> <span class=\"hljs-keyword\">__DIR__<\/span> . <span class=\"hljs-string\">'\/inc\/footer.php'<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-19\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>If you open the <code>page1.php<\/code> page and click the link, you&#8217;ll see a message on the <code>page2.php<\/code> page.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='php-flash-message-use-cases'>PHP flash message use cases <a href=\"#php-flash-message-use-cases\" class=\"anchor\" id=\"php-flash-message-use-cases\" title=\"Anchor for PHP flash message use cases\">#<\/a><\/h2>\n\n\n\n<p>In practice, you&#8217;ll use the flash messages on a signup page to redirect users to the login page with a welcome message after they sign up. Also, you&#8217;ll use the flash messages in the <a href=\"https:\/\/phptutorial.net\/php-tutorial\/php-prg\/\">Post-Redirect-Get<\/a> pattern, which you&#8217;ll learn in the next tutorial.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='summary'>Summary <a href=\"#summary\" class=\"anchor\" id=\"summary\" title=\"Anchor for Summary\">#<\/a><\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>A flash message is created on a page and displayed once on another page.<\/li><li>Use the <code>$_SESSION<\/code> superglobal variable to manage the flash messages.<\/li><li>Use the <code>flash()<\/code> developed in this tutorial to manage flash messages.<\/li><\/ul>\n<div class=\"helpful-block-content\" data-title=\"\">\n\t<header>\n\t\t<div class=\"wth-question\">Did you find this tutorial useful?<\/div>\n\t\t<div class=\"wth-thumbs\">\n\t\t\t<button\n\t\t\t\tdata-post=\"2402\"\n\t\t\t\tdata-post-url=\"https:\/\/www.phptutorial.net\/php-tutorial\/php-flash-messages\/\"\n\t\t\t\tdata-post-title=\"PHP Flash Messages\"\n\t\t\t\tdata-response=\"1\"\n\t\t\t\tclass=\"wth-btn-rounded wth-yes-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\tclass=\"feather feather-thumbs-up block w-full h-full\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> Yes <\/span>\n\t\t\t<\/button>\n\n\t\t\t<button\n\t\t\t\tdata-response=\"0\"\n\t\t\t\tdata-post=\"2402\"\n\t\t\t\tdata-post-url=\"https:\/\/www.phptutorial.net\/php-tutorial\/php-flash-messages\/\"\n\t\t\t\tdata-post-title=\"PHP Flash Messages\"\n\t\t\t\tclass=\"wth-btn-rounded wth-no-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> No <\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\t<\/header>\n\n\t<div class=\"wth-form hidden\">\n\t\t<div class=\"wth-form-wrapper\">\n\t\t\t<div class=\"wth-title\"><\/div>\n\t\t\t\n\t\t\t<textarea class=\"wth-message\"><\/textarea>\n\n\t\t\t<button class=\"btn btn-primary wth-btn-submit\">Send<\/button>\n\t\t\t<button class=\"btn wth-btn-cancel\">Cancel<\/button>\n\t\t\n\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, you&#8217;ll learn about the PHP flash messages and define a flash() function to effectively manage the flash messages.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":15,"menu_order":92,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2402","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/pages\/2402","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/comments?post=2402"}],"version-history":[{"count":5,"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/pages\/2402\/revisions"}],"predecessor-version":[{"id":3157,"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/pages\/2402\/revisions\/3157"}],"up":[{"embeddable":true,"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/pages\/15"}],"wp:attachment":[{"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/media?parent=2402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}