勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

バニラPHPでフラッシュデータ(フラッシュメッセージ)機能を実装する方法

  PHP

PHPフレームワークのCodeIgniterを勉強していた際にページ遷移好みに表示され、リロードしても表示されないというフラッシュデータ機能が便利だなと思った。同じ機能を実装できるライブラリもあるが、今回はバニラPHPにてこの機能を実装してみたい。以下に実装方法をメモ。

 

やりたいこと

  • 何らかの処理後に当該処理の成否を元にフラッシュデータを作成し、処理完了ページに遷移
  • 処理完了ページでフラッシュデータを表示

 

ソースコード

何らかの処理ページ

<?php
session_start();

//何らかの処理をした後に$flgに成否をboolで格納
$flg = false;

//$flgによってclassとメッセージを変更
$class = ($flg) ? 'success' : 'error';
$msg = ($flg) ? '処理成功しました。' : 'エラーが発生しました。';

//セッションにデータを格納
$_SESSION['flash'][$class] = $msg;

//ページ遷移
header('Location: ./complete.php');
exit;

処理完了ページ

<?php
session_start();

//変数にセッションを格納
$flash = isset($_SESSION['flash']) ? $_SESSION['flash'] : array();

//セッションを削除
unset($_SESSION['flash']);

//フラッシュメッセージが存在する場合は出力
if( !empty($flash) ){
    foreach( (array)$flash as $key => $val ){
        echo '<div class="' . $key . '">' . $val . '</div>';
    }
}

ブラウザから実行すると以下のような形で出力される筈。

<div class="error">エラーが発生しました。</div>

 

所感

先日メモしたjQueryプラグインの「Toastr」と相性が良さそう。

尚、PHPでのフラッシュデータライブラリだと「flasher」と「simple-flash」あたりを試してみたいところ。

 

参考サイト

https://kantaro-cgi.com/blog/php/simple-flash-message.html

 - PHP

  関連記事

Composer無し&ファイル1枚でPHPのエラーメッセージ画面をリッチにするライブラリ「PHP Error」の利用方法
Composer無し&ファイル1枚でPHPのエラーメッセージ画面をリッチにするライブラリ「PHP Error」の利用方法

先日PHPのエラーメッセージを見やすくするwhoopsの利用方法をメモしたが導入 ...

PodmanにComposerを導入し、パッケージをインストールする方法
PodmanにComposerを導入し、パッケージをインストールする方法

先日Podmanで導入したapache-phpに各種PHPモジュールを追加したが ...

PHPとGoogle Authenticatorの組み合わせで2段階認証を実装する方法
PHPとGoogle Authenticatorの組み合わせで2段階認証を実装する方法

2段階認証と言えばSMS送信のケースが多く、その次に通常のメール送信というケース ...

PHP8系で関数の引数が設定しやすくなる名前付き引数について
PHP8系で関数の引数が設定しやすくなる名前付き引数について

PHP8系で名前付き引数が導入されたということを最近知った。今までは「第〇引数」 ...

PHPとajaxでチャットの作成
PHPとajaxでチャットの作成

■ソース ・index.php <? error_reporting(E_ ...