ログイン成功→db.php
ログイン失敗→log001.phpをリダイレクト
というプログラムを書いています。
問題点
1.空欄のままでもログイン成功してしまう
2.未入力のエラーメッセージが表示できない
3.if ($row = $select_query)をif ($row = $login)に変えると質問1は免れるが
IDかPWどちらかを入力してログインボタンを押しリダイレクトされた場合、入力したデータが消えてしまう
(SESSIONが上手く使えていないのが原因?)
ご指摘、ご教授のほど宜しくお願い致します
ID=メールアドレス(a_mail)
PW=(apass)
lang
1<?php 2// セッション開始 3session_start(); 4 5/* 6if(!isset($_POST['name'])){ 7 $_POST['name'] = null; 8} 9$_SESSION['a_mail'] = $_POST['a_mail']; 10unset($_SESSION['error_mail']); 11if(!isset($_SESSION['a_mail'])){ 12 $_SESSION['a_mail'] = null; 13} 14$_SESSION['a_mail']; 15unset($_SESSION['error_mail']); 16//名前 17if($_POST['a_mail']==""){ 18 $_SESSION['error_mail']=1; 19} 20*/ 21require_once("db_class.php"); 22if(isset($_POST['a_mail'])) 23{ 24 $a_mail = $_POST['a_mail']; 25} 26if(isset($_POST['a_pass'])) 27{ 28 $a_pass = $_POST['a_pass']; 29} 30if(isset($_POST['a_no'])) 31{ 32 $a_no = $_POST['a_no']; 33} 34$a_no=""; 35 36//DBクラスの読み込み 37if (isset($_SESSION['a'])){ 38 // セッションにユーザIDがある=ログインしている 39 // トップページに遷移する 40 header('Location: db.php'); 41} 42 // IDとPWが送信されたときDBに接続 43if (isset($_POST['a_mail']) && isset($_POST['a_pass'])) 44{ 45 // データベースに接続 46 $SQL = new DB(); 47 $select_query = "SELECT * FROM admin_tbl WHERE a_mail='{$a_mail}' AND a_pass='{$a_pass}'"; 48 // クエリの取得と実行 49 $login = $SQL->QueryEx($select_query); 50 51 // 【正】SESSIONへ格納・一覧画面へ遷移 【誤】ログインフォームへ遷移 52 if ($row = $select_query) 53 { 54 //【正】のとき 55 $_SESSION['a'] = $row['a']; 56 header('Location: db.php'); 57 exit(); 58 } else { 59 //【誤】のとき 60 //メールアドレスの未入力メッセージ 61 if (isset($_SESSION['error_mail']) && $_SESSION['error_mail'] == 1) { 62 $error_mail = "名前にエラーがあります<br>"; 63 } else { 64 $error_name = ""; 65 } 66 //パスワードの未入力メッセージ 67 if (isset($_SESSION['error_pass']) && $_SESSION['error_pass'] == 1) { 68 $error_pass = "名前にエラーがあります<br>"; 69 } else { 70 $error_pass = ""; 71 } 72 73 //メールアドレスが未記入のとき 74 if($_POST['a_mail']==""){ 75 $_SESSION['error_message']=1; 76 } 77 //パスワードが未記入のとき 78 if($_POST['a_pass']==""){ 79 $_SESSION['error_message']=1; 80 } 81 if($_POST['a_mail']==""||$_POST['a_pass']==""){ 82 header("location: http://localhost/kadai4/log001.php"); 83 exit; 84 } 85 } 86} 87 88//データベースの切断 89//$SQL->Close(); 90 91?> 92<html> 93<body> 94<h3>お問い合わせ</h3> 95<head> 96 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 97 <title>ログイン</title> 98</head> 99<body> 100 <h1>ログインフォーム</h1> 101 <form action="log001.php" method="post"> 102 <p>ユーザ名:</p> 103 <?php print($error_mail); ?><br> 104 <input type="text" name="a_mail" value="<?php echo $a_mail=$_SESSION['a_mail']; ?>"></p> 105 <p>パスワード:</p> 106 <?php print($error_pass); ?><br> 107 <input type="password" name="a_pass" value="<?php echo $a_mail=$_SESSION['a_mail']; ?>"> 108 <p><input type="submit" value="ログイン"> 109 110 </form> 111</body> 112</html> 113
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。