実現したい事、困っている事
データベースに登録している情報と入力された情報が一致するとログインできる仕組みを作りたいです。
しかしログインとして機能しておらず、その理由が分かりません。
環境など
xamppを使用して作成しています。
データベースにはログインのための次の情報が登録されています。
データベース名:staff_data
code:1
name:根岸
password:bep123
検証した内容
・var_dump($data)すると、中には確かにデータ(コードとパスワード)が入っています。
・$staff_pass = md5($staff_pass);をコメントアウトすると、ページは飛びますがログインとして機能していません。
コメントアウトを外すと、「スタッフコードかパスワードが間違っています。」が表示されてしまいます。
コード
<body> <!--/.staff_login.phpの内容 --> <section class="wrapper"> <h1 class="login_hd">スタッフログイン</h1> <form class="form" method="post" action="staff_login_check.php"> <p>スタッフコード</p> <input type="text" name="code"> <p>パスワード</p> <input type="password" name="pass"> <button class="btn" type="button" onclick="submit();">ログインする</button> </form> </section><!--/.wrapper --> </body>
php
1<?php 2 3try{ 4 5 $staff_code = $_POST['code']; 6 $staff_pass = $_POST['pass']; 7 $staff_code = htmlspecialchars($staff_code,ENT_QUOTES,'UTF-8'); 8 $staff_pass = htmlspecialchars($staff_pass,ENT_QUOTES,'UTF-8'); 9 $staff_pass = md5($staff_pass); 10 11 $dsn = 'mysql:dbname=kaigo;host=localhost;charset=utf8'; 12 $user = 'root'; 13 $password = 'keichi2268'; 14 $dbh = new PDO($dsn,$user,$password); 15 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 16 17 $sql = 'SELECT name FROM staff_data WHERE code=? AND password=?'; 18 $stmt = $dbh->prepare($sql); 19 $data[] = $staff_code; 20 $data[] = $staff_pass; 21 $stmt->execute($data); 22 23 $dbh = null; 24 25 //データの中身を配列で返す 26 $rec = $stmt->fetch(PDO::FETCH_ASSOC); 27 28 if($rec==false){ 29 print 'スタッフコードかパスワードが間違っています。<br>'; 30 print '<a href="staff_login.php">戻る</a>'; 31 }else{ 32 header('Location:../kaigo/person_add.php'); 33 exit(); 34 } 35 36}catch(Exception $e){ 37 print 'ただいま障害によりご迷惑をおかけしております'; 38 exit(); 39} 40 41?>
何が間違っているのか、ご教示いただけますと幸いです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/16 13:05
2020/09/16 16:16 編集
2020/09/17 00:03
2020/09/17 01:40