質問: $stmt->fetch(PDO::FETCH_ASSOC)){ //もし登録されていない名前だったら header('Location: index.php'); //ログインページに戻る exit; }else{ header('Location: main.php');//先のページに移動 (ここが問題の箇所です) exit; } } ?> ``` しかし、上記のコードの「問題の箇所」をheaderからrequireにすると上手くいきました! 嬉しいのですがどういうことやら理解していません。 そこでお伺いしたいのはheaderとrequireの仕組みの違いと、このような処理は果たして妥当なのか、ということです。 よろしくお願いいたします。
回答: 質問の意図とは少し違ってしまうのですが、そもそも > > 「ログイン画面で名前とemailを入力し、login.phpへPOSTする」 > > 「login.phpで受け取り、名前とemailがデータベースにあるか確認、なければログイン画面へ戻り > > > あれば次のページに名前をPOSTしつつ移行」 > > > これが普通の作りとしては間違っているように思います。 結果的にmain.phpに渡したいならlogin.phpの処理をmain.phpに書いてしまえば、 > > }else{ > > header('Location: main.php');//先のページに移動 (ここが問題の箇所です > > ) > > exit; > > } > > > ここの処理は不要になります。 あと、スーパーグローバル変数($_POSTなど)は変更可能なので直接参照はしないほうが良いですよ。 filter_input(INPUT_POST, 'name');こんな感じで取得したほうがいいです。