現在、webアプリを作成するために練習用としてログイン機能を作成しようとしているのですが、登録したemailとpasswordを入力すると、localhost でリダイレクトが繰り返し行われました。
と表示されてしまいます。
こちらを解決して、ログイン機能を完成させたいです。
該当のコード
PHP
1//ログインページです(index.php) 2ob_start(); 3session_start(); 4if(isset($_SESSION['user']) != "") { 5 header("Location: home.php"); 6} 7include_once 'dbconnect.php'; 8 9if(isset($_POST['login'])) { 10 11 $email = $mysqli->real_escape_string($_POST['email']); 12 $password = $mysqli->real_escape_string($_POST['password']); 13 14 // クエリの実行 15 $query = "SELECT * FROM users WHERE email='$email'"; 16 $result = $mysqli->query($query); 17 if (!$result) { 18 print('クエリーが失敗しました。' . $mysqli->error); 19 $mysqli->close(); 20 exit(); 21 } 22 23 // パスワード(暗号化済み)とユーザーIDの取り出し 24 while ($row = $result->fetch_assoc()) { 25 $db_hashed_pwd = $row['password']; 26 $user_id = $row['user_id']; 27 } 28 29 // データベースの切断 30 $result->close(); 31 32 // ハッシュ化されたパスワードがマッチするかどうかを確認 33 if (password_verify($password, $db_hashed_pwd)) { 34 $_SESSION['user'] = $user_id; 35 header("Location: home.php"); 36 exit; 37 } else { ?> 38 <div class="alert alert-danger" role="alert">メールアドレスとパスワードが一致しません。</div> 39 <?php } 40}
PHP
1//ログイン情報確認ページ(home.php) 2session_start(); 3include_once 'dbconnect.php';--- 4if(isset($_SESSION['user'])) { 5 header("Location: index.php"); 6} 7 8$query = "SELECT * FROM users WHERE user_id=" .$_SESSION['user']. ""; 9$result = $mysqli->query($query); 10 11$result = $mysqli->query($query); 12if(!$result) { 13 print ('クエリーが失敗しました' . $mysqli->error); 14 $mysqli->close(); 15 exit(); 16} 17 18while($row = $result->fetch_assoc()) { 19 $username = $row['username']; 20 $email = $row['email']; 21} 22 23$result->close();
試したこと
Cookieを削除したのですが、もう一度ログイン情報を入力したら同じ状況になったため、効果がなかったです。
以上です。
わかる方がいらしたらご回答よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/03 12:40