おはようございます。
PHPでログイン処理の勉強をしているものです。仕組みは、
「ログイン画面で名前とemailを入力し、login.phpへPOSTする」
「login.phpで受け取り、名前とemailがデータベースにあるか確認、なければログイン画面へ戻り、あれば次のページに名前をPOSTしつつ移行」
というものを考えています。
そこで以下のコードを打ってみたのですが、次のページまでPOSTが飛んでくれませんでした。
php
1<?php 2if(empty($_POST['name']) || empty($_POST['email'])){ //もし名前、もしくはemail欄が空っぽだったら 3 header('Location: index.php'); //ログインページに戻る 4 exit; 5}else{ 6 $pdo = new PDO('mysql:dbname=Accumile;host=localhost;charset=utf8','root',''); 7 $sql = "SELECT * FROM login_datas WHERE name = :name AND email = :email"; 8 $stmt = $pdo->prepare($sql); 9 $stmt->bindValue(':name',$_POST['name']); 10 $stmt->bindValue(':email',$_POST['email']); 11 $stmt->execute(); 12 if(!$re = $stmt->fetch(PDO::FETCH_ASSOC)){ //もし登録されていない名前だったら 13 header('Location: index.php'); //ログインページに戻る 14 exit; 15 }else{ 16 header('Location: main.php');//先のページに移動 (ここが問題の箇所です) 17 exit; 18 } 19} 20?> 21 22<!DOCTYPE html> 23<html lang="ja"> 24<head> 25</head> 26<body> 27<form action="main.php" method="post"> 28 <input type="hidden" name="name" value="<?php echo $_POST['name']?>"> 29 <input type="hidden" name="email" value="<?php echo $_POST['email']?>"> 30</form> 31</body> 32</html>
しかし、上記のコードの「問題の箇所」をheaderからrequireにすると上手くいきました!
嬉しいのですがどういうことやら理解していません。
そこでお伺いしたいのはheaderとrequireの仕組みの違いと、このような処理は果たして妥当なのか、ということです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー