ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

入力が消えているはずなのに消えたと判断できなかった現象

セッション変数が中途半端に残っていたら発生するのかもしれません。

現象

ユーザー情報登録システムで、ユーザー情報がまったくない状態で登録が完了する現象が発生しました。

推定原因

入力された値は、post形式で入力内容確認画面に渡され、入力内容確認画面でセッション変数に代入します。

$_SESSION['_form'] = $_POST;


登録完了画面では、直接遷移された場合も考慮して、セッション変数に値が入っていなかったら、処理をしないようにしています。

if ($_SESSION['_form'] == '' ){
    echo '入力がありません。';
    die();
}
$name = $_SESSION['_form']['name'];


入力内容確認画面のまま長時間放置され、セッションが破棄されnameのレベルでは空になったけれど、_formのレベルでは空文字と判断できる状態にはならなかったのではないかと推測しました。


nameのレベルで値が設定されているかチェックして、判定できるか様子を見ます。