ラボ > PHPFuelPHP:エラー絡み、セッション、ブラウザ

セッションが切断される理由たち

作成日:2018-02-26, 更新日:2019-08-13

基本

基本、下記のどちらかで分かるはず・・・。
・他のブラウザや端末で確認
・ソースの確認

これでも分からない場合はサーバ側の問題もあったりする。

他のブラウザや端末で確認

特定の人だけダメな時に考えられる理由。

ブラウザの設定

・ブラウザで「拒否」する設定しているかどうか。
・機能拡張(アドオン)が悪さしている可能性もあり。

ソースの確認

有効期限

セッション自体の有効期限の問題。
※「(お試しとして)短い時間に設定していた」とか。
※ブラウザを閉じたときの挙動もチェック

サーバ側(php.ini等)で設定されているかもしれない。

リンク切れ

faviconを含めてリンク切れのファイルがあるとダメらしい。

・favicon
・Javascript
・画像
・CSS(CSSの中身にある各画像やファイルのPATHも確認)

セットしていないだけ

「セッションをセットしたつもり」という可能性。

if文の中でセットしていたけど「else」のほうでセットしていなかった・・・など。

FuelPHPの場合

・cookieが標準。
他のシステムでファイルやDB保存に慣れきっている場合、FuelPHPの「config/sessions.php」を書き換えないことでcookieの容量オーバー。

・「\session::set_flash()」でセットして、次の次のページで取得しようとしている。
※「遷移先が別ページにリダイレクトしている」等

・FuelPHPのバージョンとサーバとの絡み
※FuelPHPの任意のバージョンとXamppの組合せセッションが消えるというバグがあったりする(FuelPHP1.8.0とXamppで消えた)

PHPの場合

セッションスタート(session_start())する前に何かを出力している場合。

・「<?php」の前にHTMLなどを記述している
・「<?php」と「session_start()」の間に「echo」等している

理由は不明

fuelPHPの「〇〇〇_flash()」と「config/routes.php」の「_404_」

理由は分からない。
でも「_404_」をルーティング指定していると「set_flash()」が消える。
欲しければ・・・自前で用意するのが良さげ。

その他

上記をチェックして、お手上げ状態のとき。

サーバ or PCの時計

それぞれの時間に差がありすぎるとダメ。

ファイヤーウォール

詳細は分からない。

「ステートフル・インスペクション」という機能があるそうだ。
コレも調べてみたほうがいいかもしれない。