ログ日記

作業ログと日記とメモ

フラッシュセッションにハマる

前にも同じ問題でハマったのに忘れていて再びハマったメモ。


リダイレクト前にセッションに値を保存して、リダイレクト後のページで取り出して、削除するような一度だけ使うセッション変数にはフラッシュセッションを使う。
セッション系ライブラリには大抵 flash メソッドがあると思う。
リロードにや更に次のページにも対応するために keep メソッドなんかも用意されている。

で、何故か値が消えていることがある。


詳しく処理を追うと、フロントコントローラーでファイルが存在しない場合は全てPHPが起動するようになっていて、not foundでもPHPが実行される。
このときログインメニューやメッセージ用にnot foundページにも関わらずセッションを使っていたりすると、ここでフラッシュセッションがリセットされる。


画面遷移のどこかで画像などがnot foundになった場合に、一見正常フローのようでも「画像呼び出し=>ファイルがない=>phpでnot found用処理」となって見えない画面遷移とフラッシュセッションのリセットが動いていることになる。


よく考えれば当然のことなんだけれど、スマートな解決方法が思い付かない。
とりあえず404や500のときはkeepする、あるいはフラッシュセッションを消す処理を実行しない、というようなちょっとややこしいプログラムを書いた。