勉強したことのメモ

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

  関連記事

MySQLでのバッククオート
MySQLでのバッククオート

phpmyadminを使っていると``←みたいな括りを見るけど これなんなん?  ...

PHPのHTTPクライアント用ライブラリ「Guzzle」の利用方法
PHPのHTTPクライアント用ライブラリ「Guzzle」の利用方法

以前に「Requests for PHP」を試したが、似たようなライブラリで「G ...

PHPで作成したプログラムをcron設定し自動実行する方法
PHPで作成したプログラムをcron設定し自動実行する方法

cronの設定方法。サーバー側での設定とPHP側での書き方を以下にメモ。 &nb ...

ブログサービスの様にサブドメインを動的に生成する方法   
ブログサービスの様にサブドメインを動的に生成する方法  

ブログサービスの様に「hoge」というログインIDを作成した際「hoge.blo ...

PHPでCSVファイル出力用の関数
PHPでCSVファイル出力用の関数

ここのところログ系をCSVファイル出力にするケースが多かった為、使いまわせるよう ...