勉強したことのメモ

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

  関連記事

PHPで配列をGETパラメータ化、GETパラメータを配列化する方法

PHPで配列を「name=hoge&id=1&pass=fdkn ...

MySQLiでDELETE文

MySQLiでDELETE文 ■ソース $mysqli = new mysqli ...

地理院のジオコーディングAPIをPHPからリクエストする方法

以前に地理院のジオコーディングAPIをjavascriptからajaxでリクエス ...

PHPにてHTML / 画像ファイルをPDFファイル化する方法(mPDF)

PHPにてHTML / 画像ファイルをPDFファイル化したい。検索してみるもサー ...

PHPとSQLiteでi-mobileのデータをグラフ化する方法

i-mobileでクリック保証のアフィリエイトだけど数値が並んでいるだけでグラフ ...