質問: 下記のように 1) でpostの値を受け取り、その内容に問題がなければ 2) $_SESSION['name']=$username;を格納し 3) ページがリフレッシュされ、$_SESSION['name']が!is_nullではないのでb.phpに遷移する、一方で受け取った内容にエラーがあれば_SESSION['name']=$usernameされないので、 $_SESSION['name']=$username;画されず、a.php上でエラーメッセージが表示される ということを期待してコードを書いたのですが、実際にはb.phpには遷移をしてくれません。 またエラー表示もされずに同じa.phpが表示されるのですが、そこからページをリロードすると b.phpに遷移されます。 ここから考えられることはsubmitされてページが再度読み込まれた時点では が実行されていないということなのですが、この原因を解決方法についてアドバイスをいただけますでしょうか。 よろしくお願い申し上げます。 a.php ``` ```
回答: コメントで若干触れましたが、タイミングとしては「入力チェックOK」のタイミングでセッションに格納されているからだと思います。 格納した後、自身に対してリダイレクトするようにしてはいかがでしょうか。 ``` if(empty($error)){ //中略 $_SESSION['name']=$username; header('Location:'.$_SERVER['REQUEST_URI']); exit; } ``` そうすることでセッションに格納された状態で冒頭から処理が流れるので`if(!is_null($_SESSION['name'])){`も通ると思います。