バニラ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」あたりを試してみたいところ。
参考サイト
関連記事
-
-
ブラウザから動画ファイル名を確認できないようにPHPで動画を出力する方法
Webページ上で動画ファイルを再生したい場合、通常だとブラウザのソースコード上に ...
-
-
formにGoogle reCAPTCHA v3を組み込み、PHPでスコア判定する方法
だいぶ前にGoogle reCAPTCHA v2をformに組み込むという記事を ...
-
-
PHPにて特定の処理にかかった時間とメモリ使用量を測定する方法
PHPにて特定の処理にかかった時間とメモリ使用量を測定したい。以下にソースコード ...
-
-
PHPでパスワードを保存する際に暗号(パスワードハッシュ)化させ、ログイン認証時に用いる方法
PHPでログイン認証を組み込む際に今までは特に暗号化は行っていなかった。と言うの ...
-
-
PHPで指定日から曜日を割り出す
曜日ってどうやって割り出すの? となったのでメモ。 ■リファレンス http:/ ...