前提・実現したいこと
現在研修で練習課題に取り組んでいます。
メールアドレスとパスワードをログイン画面で入力してもらい、データベースに登録済みのアカウントのメールアドレスとパスワードと照らし合わせて組み合わせが正しければログインができ、次の画面に移行できるようにしようとしています。
※パスワードはハッシュ化して登録済み。
ログイン機能を実装中に以下のエラーメッセージが発生しました。
ご教授お願いします。
発生している問題・エラーメッセージ
Notice: Trying to access array offset on value of type bool in /Applications/MAMP/htdocs/login.php on line 17
該当のソースコード
login.php
1 2<?php 3$err_msg = ""; 4 5if (isset($_POST['login'])) { 6 $mail = $_POST['mail']; 7 $password = $_POST['password']; 8 9 try { 10 $pdo = new PDO("mysql:dbname=●●●●●;host=localhost;" ,"●●●" ,"●●●"); 11 $sql = 'select * from test where mail=? and password=?'; 12 $stmt = $pdo->prepare($sql); 13 $stmt->execute(array($mail,$password)); 14 $result = $stmt->fetch(); 15 $stmt = null; 16 $pdo = null; 17 18 if ($result[0] != 0){ //エラー箇所 19 header('Location: http://localhost/index.html'); 20 exit; 21 22 }else{ 23 $err_msg = "アカウント情報が間違っています。"; 24 } 25 26 }catch (PDOExeption $e) { 27 echo $e->getMessage(); 28 exit; 29 } 30} 31 32?> 33 34 35<!DOCTYPE html> 36<html lang="ja"> 37 38 <head> 39 <meta charset="UTF-8"> 40 <title>ログイン画面</title> 41 <link rel="stylesheet" type="text/css" href="login.css"> 42 </head> 43 44<body> 45 <header> 46 <ul> 47 48 </ul> 49 </header> 50 <form action="" method="post"> 51 <br><h3>ログイン画面</h3><br> 52 <div class="login"> 53 <ul> 54 <li> 55 <label>メールアドレス</label> 56 <input type="email" class="text" size="30" name="mail" maxlength="100" pattern="[/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/]"> 57 </li> 58 <br> 59 <li> 60 <label>パスワード</label> 61 <input type="password" class="text" size="30" name="password" maxlength="10" pattern="^[0-9A-Za-z]+$"> 62 </li> 63 </ul> 64 </div> 65 66 <br> 67 <p><input type="submit" class="submit" name="login" value="ログイン"></p> 68 </form> 69 70 71<footer></footer> 72 73</body> 74</html> 75
回答3件
あなたの回答
tips
プレビュー