PHPでログイン機能を作っています。
フォームでメールアドレスとパスワードを入力し、合致するものがデータベース上にあったら次のページに移行するというプログラムを書いたつもりなのですが、データベースに事前に用意したメールアドレスとパスワードを入力しても画面遷移が起こりません。コードのどの部分が原因か調べたりしましたがいまだに原因がわかりません。
わかる方がいらっしゃったらご回答お願い致します。
###自分で試してみたこと
12行目からのif文の条件式をisset($member)のようにして、そもそも$memberにnullであっても値が入っているかどうか調べました。そしたらログイン後のページに移行したので、データベースから値を取り出すところまではプログラムが実行されていることはわかっています。
php
1<?php 2require_once('../dbconnect.php'); 3ini_set('display_errors', 1); 4ini_set('error_reporting', E_ALL); 5session_start(); 6 7if(!empty($_POST)){ 8 if($_POST['email'] != ''&& $_POST['password'] != ''){ 9 $login=$db->prepare('SELECT * FROM members WHERE email=? AND password=?'); 10 $login->execute(array($_POST['email'],$_POST['password'])); 11 $member=$login->fetch(); 12 if($member){ 13 $_SESSION['id']=$member['id']; 14 $_SESSION['time']=time(); 15 header('Location:index.php'); 16 exit(); 17 }else{ 18 $error['login']='failed'; 19 20 } 21 }else{ 22 $error['login']="blank"; 23 24 } 25} 26?> 27 28<!DOCTYPE html> 29<html> 30<head> 31<meta charest="UTF-8"> 32<link rel="stylesheet" href="css/style.css"> 33<title>ログイン画面</title> 34</head> 35<body> 36<header><h1>ログインする</h1></header> 37<main class="login"> 38<div id="lead"> 39<p>メールアドレスとパスワードを記入してログインしてください</p> 40<p>入会手続きがまだの方はこちらからどうぞ</p> 41<p>»<a href="index.php">入会手続きをする</a></p> 42</div> 43<form action="" method="POST"> 44<dl> 45 <dt>メールアドレス</dt> 46 <dd><input type="text" name="email" size="35" value="<?php echo isset($_POST['email'])? htmlspecialchars($_POST['email']):""?>"> 47 <?php if(isset($error['login'])&&$error['login']==="blank"):?> 48 <p class="error">メールアドレスとパスワードを入力してください</p> 49 <?php endif ?> 50 <?php if(isset($error['login'])&&$error['login']==='failed'):?> 51 <p class="error">ログインに失敗しました。正しくメールアドレスとパスワードを入力してください</p> 52 <?php endif ?> 53 54 </dd> 55 <dt>パスワード</dt> 56 <dd><input type="passwors" name="password" size="35" value="<?php echo isset($_POST['password'])? htmlspecialchars($_POST['password']):""?>"></dd> 57 <dt>ログイン時の記録</dt> 58 <dd><input type="checkbox" name="save" value="on"><label for="save">次回からは自動的にログインする</label></dd> 59</dl> 60 61<input type="submit" value="ログインする"> 62</form> 63 64</main> 65</body> 66</html>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/02/29 14:34
退会済みユーザー
2020/02/29 14:35
2020/02/29 20:32 編集