バニラ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」あたりを試してみたいところ。
参考サイト
関連記事
-
-
FLASHがインストールされているかどうかチェックする
以前にここでちょっとやったけど、インストールされているか どうかだけならもっと良 ...
-
-
CAPTCHAに代わる無料のツール「Cloudflare Turnstile」の導入方法
CAPTCHAと言えばGoogleのreCAPTCHAを思い浮かべるが、稀にCl ...
-
-
PHPバージョンが古くjson_decodeが使えない際の対応方法(Services_JSON)
PHPのバージョンが古くてjson_decodeが使えないという状況があった。ま ...
-
-
formのinput="file"でディレクトリを選択させ、ディレクトリ内のファイルを全てアップロードする方法
フォームで複数のファイルをアップロードしたい場合、input="file"を複数 ...
-
-
PHPでメルマガを配信する方法(1件ずつ送信するパターン)
以前にPHPでメルマガを配信する方法を書いたけど、BCCだと相手の名前などユーザ ...