いろんなサイトを見ながらログインフォームを作成しています。
MySQL
1tablename = staff 2id,name,password
DBの設計は単純に上記のような形としました。
尚、すでに値が挿入済みとします。
PHP
1require_once('config.php'); 2require_once('functions.php'); 3 4session_start(); 5 6// Loginボタンが押されたら 7if (isset($_POST['Login'])) { 8 // エラー 9 if (empty($_POST['name'])) { 10 $errorMessage = "名前が無いです"; 11 } else if (empty($_POST['password'])) { 12 $errorMessage = "パスワードが無いです"; 13 } 14 15 // エラーが無かったら 16 if (!empty($_POST['name']) && !empty($_POST['password'])) { 17 $dbh = connectDb(); 18 /* functionの確認です。合ってるかわからなくて、、、 19 function connectDb() { 20 try { 21 return new PDO(DSN, DB_USER, DB_PASSWORD); 22 } catch (PDOException $e) { 23 echo $e->getMessage(); 24 exit; 25 } 26 } */ 27 $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 28 $stmt = $dbh->prepare("SELECT * FROM staff"); 29 $stmt->execute(); 30 } 31 while ($row = $stmt->fetch()) { 32 $db_hashed_pwd = $row['password']; 33 } 34 35 if (password_verify($_POST['password'], $db_hashed_pwd)) { 36 session_regenerate_id(true); 37 $_SESSION['staff'] = $_POST['name']; 38 header('Location: '); 39 exit; 40 } 41 else { 42 $errorMessage = "いずれか間違ってるよ"; 43 } 44 else { 45 46 } 47
いろいろ参考にしながら、やってみたのですが、、、、どうもうまくいきませんでした。
エラーに関しては、
nameとpasswordに入力してログインすると
→$errorMessage = "いずれか間違ってるよ"が表示される
両方空だと
→whileの所でひっかかります
名前が空だと
→いずれか間違ってるよが表示されます
passwordが空だと
→whileでひっかかります
パスワードの扱い方がミスなんだと思うのですが、、、、
HTML
1<form action="" method="post"> 2名前<input type="text" name="name"> 3パス<input type="password" name="password"> 4<input type="submit" name="Login" value="ログイン"> 5</form>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/27 04:10