ログインページを作っています
現在ログインページを作ってます。
入力欄が空白場合はエラーを出し、入力されているものはDBに登録してあるデータと不一致であればエラーを出す。
一致していれば次の画面に飛ぶというふうにしたいです。
しかしプログラムを実装すると、正しいpw、アドレスを入力してもエラー('failde')が表示されます。
正しいpw、アドレスを入力してもエラーが出る原因を教えてください。
該当のソースコード
index.php
php
1<?php 2require('dbconnect.php'); 3session_start(); 4$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 5 6if(!empty($_POST)) { 7 //空白の場合 8 if($_POST['email'] === '') { 9 $error['email'] = 'blank'; 10 } 11 if($_POST['password'] === '') { 12 $error['password'] = 'blank'; 13 } 14 15 16 if($_POST['email'] !== '' && $_POST['passwprd'] !== '') { 17 //不一致の場合 18 $membersEmail = $db->prepare('SELECT * FROM members WHERE email=?'); 19 $membersEmail->execute(array( 20 $_POST['email'] 21 )); 22 $memberEmail = $membersEmail->fetch(); 23 24 if($_['email'] !== $memberEmail) { 25 $error['login'] = 'failde'; 26 } 27 28 $membersPw = $db->prepare('SELECT * FROM members WHERE password=?'); 29 $membersPw->execute(array( 30 sha1($_POST['password']) 31 )); 32 $memberPw = $membersPw->fetch(); 33 34 if($_POST['password'] !== $memberPw) { 35 $error['loginPw'] = 'failde'; 36 } 37} 38 39 //エラーがない場合 40 if(empty($error)) { 41 $_SESSION['id'] = $_POST; 42 header('location:index.php'); 43 exit(); 44 } 45 46 47 48 } 49 ?> 50 51<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 52<html xmlns="http://www.w3.org/1999/xhtml"> 53<head> 54<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 55<link rel="stylesheet" type="text/css" href="style.css" /> 56<title>ログインする</title> 57</head> 58 59<body> 60<div id="wrap"> 61 <div id="head"> 62 <h1>ログインする</h1> 63 </div> 64 <div id="content"> 65 <div id="lead"> 66 <p>メールアドレスとパスワードを記入してログインしてください。</p> 67 <p>入会手続きがまだの方はこちらからどうぞ。</p> 68 <p>»<a href="join/">入会手続きをする</a></p> 69 </div> 70 <form action="" method="post"> 71 <dl> 72 <dt>メールアドレス</dt> 73 <?php if($error['email'] == 'blank'): ?> 74 <p class="error"><?php print 'アドレスを入力してください。'; ?></p> 75 <?php endif; ?> 76 <?php if($error['login'] == 'failde'): ?> 77 <p class="error"><?php print 'アドレスが違います'; ?></p> 78 <?php endif; ?> 79 <dd> 80 <input type="text" name="email" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['email']); ?>" /> 81 </dd> 82 <dt>パスワード</dt> 83 <?php if($error['password'] == 'blank'): ?> 84 <p class="error">pwを入力してください</p> 85 <?php endif; ?> 86 <?php if($error['loginPw'] == 'failde'): ?> 87 <p class="error"><?php print 'pwが違います'; ?></p> 88 <?php endif; ?> 89 <dd> 90 <input type="password" name="password" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['password']); ?>" /> 91 </dd> 92 <dt>ログイン情報の記録</dt> 93 <dd> 94 <input id="save" type="checkbox" name="save" value="on"> 95 <label for="save">次回からは自動的にログインする</label> 96 </dd> 97 </dl> 98 <div> 99 <input type="submit" value="ログインする" /> 100 </div> 101 </form> 102 </div> 103 <div id="foot"> 104 <p><img src="images/txt_copyright.png" width="136" height="15" alt="(C) H2O Space. MYCOM" /></p> 105 </div> 106</div> 107</body> 108</html> 109
dbconnect.php
php
1<?php 2try { 3$db = new PDO('mysql:dbname=mini_bbs;host=localhost;charset=utf8','root', 'root'); 4} catch (PDOException $e) { 5echo 'DB接続エラー: ' . $e->getMessage(); 6} 7?>
回答1件
あなたの回答
tips
プレビュー