勉強したことのメモ

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

  関連記事

CodeIgniter4でGET / POSTパラメータの受け取りとルーティング設定方法
CodeIgniter4でGET / POSTパラメータの受け取りとルーティング設定方法

CodeIgniter4.4.4でページを開いた際にGET / POSTパラメー ...

PHPにて「みんなの自動翻訳」のAPIで指定したテキストの言語判定する方法
PHPにて「みんなの自動翻訳」のAPIで指定したテキストの言語判定する方法

迷惑メール対策等でメール本文が日本語のもののみ受信したい場合がある。ただ、本文内 ...

CodeIgniterのバージョンの調べ方
CodeIgniterのバージョンの調べ方

CodeIgniterを使っているシステムがあったが、どうも記憶しているディレク ...

PHPにてサイトにPayPay決済システム及び決済キャンセル機能を実装する方法
PHPにてサイトにPayPay決済システム及び決済キャンセル機能を実装する方法

ここのところクレジットカード決済関連のメモを書いているが、他の決済方法についても ...

PHPで数字をゼロパディング(ゼロ埋め)する方法
PHPで数字をゼロパディング(ゼロ埋め)する方法

PHPで予め桁数を決めておいて、桁数未満の場合は0で埋めたい場合の対応方法をメモ ...