###ログインフォームで「送信」後の表示切替が働かない
お世話になっております。
現在PHP・MySQLを使った、ログインフォームの作り方について学習しております。
ログインフォームにメールアドレスとパスワードを入力して、送信ボタンを押したあと、DBに登録されているデータと照らし合わせて表示させるページを以下のように切り替えたいのです。
ログイン成功 → ”あなたのemailは...です<br>あなたのpassは...です"
ログイン失敗 → ”ログインしてください"
発生している問題
DBに登録されていないメールアドレス・パスワードを使ってわざとエラーにしても、ブランクのまま送信してエラーにしても、全てログイン成功後のメッセージが表示されます。 ログイン失敗の場合の、mypage.phpで条件分岐しているエラーメッセージ(ログインしてください)はなぜ表示されないのでしょうか。
該当のソースコード
//....login.php内.... <?php error_reporting(E_ALL); ini_set('display_errors','On'); if(!empty($_POST)){ $email = $_POST['email']; $pass = $_POST['pass']; $dsn = 'mysql:dbname=php_sample01;host=localhost;charset=utf8'; $user = 'root'; $password = 'aa'; $options = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, ); $dbh = new PDO($dsn, $user, $password, $options); $stmt = $dbh->prepare('SELECT * FROM users WHERE email = :email AND pass = :pass'); $stmt->execute(array(':email' => $email, ':pass' => $pass)); $result = 0; $result = $stmt-> fetch(PDO::FETCH_ASSOC); if(!empty($result)){ session_start(); $_SESSION['login'] = true; header("Location:mypage.php"); } } ?> //....以下mypage.php<body>内.... <?php if(!empty($_SESSION['login'])){ ?> <h1>マイページ</h1> <section> <p> あなたのemailは...です<br/> あなたのpassは...です </p> </section> <?php }else if(empty($_SESSION['login'])){ ?> <p>ログインしてください</p> <?php } ?>
試したこと
login.php内のif文にelseが無いのがいけないのかと思い、elseifでemptyの場合、echo 'ログインしてください';とするように記述してみました(根本解決にはなってませんが・・・)。
ですがこちらも反映されません。
当方初めての質問でプログラミングも不慣れなため、質問の意図がわかりにくいかもしれません。申し訳ございません。
どうぞよろしくお願いいたします。
動産環境
PHP MyAdmin: 4.5.1
回答1件
あなたの回答
tips
プレビュー