前提・実現したいこと
MAMP環境でログイン機能の作成を行っている所です。
データベースから結果が返ってきていない状況なのは分かったのですがなぜ返って来ないのか調べてもわからない状態です。
かなり初歩的な質問になってしまうとは思うのですがご教授頂けますと幸いです。
※POST送信したpassword平文として表示されている状態です。
発生している問題・エラーメッセージ
エラーメッセージは表示されず画面は正常に表示されている状態。 ログインがしたくてもログインが出来ない状態です。現状分かっているのは$resultに上手く値が返って来ていなさそうということです。
該当のソースコード
loginphp
1<?php 2 require_once('../../Controllers/LoginController.php'); 3 //オブジェクト生成 4 $login = new LoginController(); 5 6 if($_POST){ 7 $result = $login->login($_POST); 8 if(!empty($result)){ 9 $_SESSION['User'] = $result; 10 header('Location: /php_base/07_SelfMade/Views/mypage/mypage.php'); 11 exit; 12 }else{ 13 $massage = "ログインできませんでした"; 14 } 15 } 16 ?> 17 18<!DOCTYPE html> 19<html lang="ja"> 20<head> 21 <meta charset="UTF-8"> 22 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 23 <title> TeBuRa-Login</title> 24 <!-- title --> 25 <link rel="stylesheet" type="text/css" href="../../public/css//bootstrap.min.css"> 26 <!-- css --> 27</head> 28<body> 29 <div id="wrapper"> 30 <header> 31 <?php require('../header_nonmember.php'); ?> 32 <!-- <?php require('../header_member.php'); ?> --> 33 </header> 34 <!-- header --> 35 <main class="container"> 36 <article> 37 <section> 38 <div class="row"> 39 <div class="col-1 mt-5 mx-5"> 40 <h1>Login</h1> 41 </div> 42 <!-- col-1 --> 43 </div> 44 <!-- row --> 45 <form class="m-5 p-5" name="form" action="" method="POST"> 46 <?php if (isset($massage)) { 47 var_dump($_POST); 48 var_dump($result); 49 var_dump($_SESSION['User']); 50 echo "<p class = 'error'>".$massage."</p>"; 51 }?> 52 <div class="row mb-4"> 53 <label for="inputEmail3" class="col-sm-2 col-form-label">E-mail</label> 54 <div class="col-sm-10"> 55 <input type="email" class="form-control" id="inputEmail3" name="mail"> 56 </div> 57 </div> 58 <div class="row mb-4"> 59 <label for="inputPassword3" class="col-sm-2 col-form-label">Password</label> 60 <div class="col-sm-10"> 61 <input type="password" class="form-control" id="inputPassword3" name="password"> 62 </div> 63 </div> 64 65 <div class="mt-5 pt-5 d-grid mx-auto col-2"> 66 <a href="/php_base/07_SelfMade/Views/login&signup/passreset_request.php" class="link-primary">パスワードを忘れた方</a> 67 </div> 68 <div class="mt-4 d-grid mx-auto col-1"> 69 <button type="submit" class="btn btn-primary"> Login</button> 70 </div> 71 </form> 72 </section> 73 <!-- section --> 74 </article> 75 <!-- article --> 76 </main> 77 <!-- main container-fluid --> 78 <footer> 79 <?php require('../footer.php');?> 80 </footer> 81 <!-- footer --> 82 </div> 83 <!-- wrapper --> 84 <script src=" ../../public/js/jquery-3.5.1.js" type="text/javascript"> 85 </script> 86 <script src="../../public/js/bootstrap.min.js"></script> 87 <script src="../../public/js/xxx.js"></script> 88 <!-- js --> 89</body> 90</html>
Loginphp
1<?php 2require_once(__DIR__ . '/Db.php'); 3 4class Login extends Db{ 5 private $table = 'users'; 6 7 //DB接続 8 public function __construct($dbh = null){ 9 parent::__construct($dbh); 10 } 11 12 //ログイン 13 public function login($arr){ 14 $sql = 'SELECT * FROM users WHERE mail = :mail AND password = :password'; 15 $stmt = $this->dbh->prepare($sql); 16 $params = array(':mail'=>$arr['mail'],':password'=>$arr['password']); 17 $stmt->execute($params); 18 $result = $stmt->fetch(); 19 return $result; 20 } 21}
LoginControllerphp
1<?php 2session_start(); 3require_once('/Applications/MAMP/htdocs/php_base/07_SelfMade/Models/Login.php'); 4 5class LoginController{ 6 private $Login; //Contactモデル 7 8 //DB接続 9 public function __construct(){ 10 //モデルオブジェクトの生成 11 $this->Login = new Login(); 12 } 13 14 //ログイン login 15 public function login($arr){ 16 $this->Login->login($arr); 17 } 18 19}
試したこと
var_dump($_POST);
var_dump($result);
var_dump($_SESSION['User']);
上記をlogin.phpのhtml内に記述しどこまでは代入が出来ているのか調べる所までは実施。 該当ソースのbody内20行目あたりに記述しております。
下記が返って来た値です。
array(2) { ["mail"]=> string(23) "入力内容" ["password"]=> string(1) "入力内容" } NULL NULL
そこからどうすればいいかわからない状態です。
phpMyAdminで下記を実行した場合は欲しいデータは返ってきます。
SELECT * FROM users WHERE mail = "入力内容" AND password = "入力内容"
補足情報(FW/ツールのバージョンなど)
MAMP
回答2件
あなたの回答
tips
プレビュー