password_verify()がうまく機能しないです
コードの記載方法は合っているはずなのですが
if文でpassword_verify()がtrueの場合はログイン処理をしております
ちなみにpassword_hash()はうまく処理できています
新規でアカウントを作成する際とログインのみの2通りがあります
ログイン確認ファイル
php
1<!DOCTYPE HTML> 2<html lang="jp"> 3 4<head> 5</head> 6 7<body> 8 <!-- 初期化 --> 9 <?php 10 11 try{ 12 require_once("../../../../confidential/detabaseAccses.php"); 13 14 $checkUserName = $_POST["userName"]; 15 $aleadyHashPassword = $_POST["aleadyHashPassword"]; 16 17 18 19 20if(!empty($_POST["unEncodePassword"])){ 21 $needHashPassword = $_POST["unEncodePassword"]; 22 $aleadyHashPassword = password_hash($needHashPassword, PASSWORD_DEFAULT); 23} 24 25 //DBからログイン情報が合っているか確認 26 $stmt = $dbh->prepare('SELECT * FROM user WHERE userName = ? AND password = ?'); 27 $stmt->bindValue(1,$checkUserName,PDO::PARAM_STR); 28 $stmt->bindValue(2,$aleadyHashPassword,PDO::PARAM_STR); 29 $stmt->execute(); 30 31 foreach($stmt as $rec){ 32 33 $userName = $rec["userName"]; 34 $password = $rec["password"]; 35 36 } 37 38 39 if(password_verify($aleadyHashPassword, $password)) { 40 41 session_start(); 42 $_SESSION["login"] = 1; 43 $_SESSION["userName"] = $userName; 44 header('Location:../../../../shop/hagoli/salesPage/mainPage/main/mainPage.php'); 45 46 47 48 }else { 49 print 'ユーザー名またはパスワードが間違っています'; 50 print '<a href = "../../../../shop/hagoli/salesPage/mainPage/main/mainPage.php"><button>HAGOLI</button></a>'; 51 } 52 53 }catch(PDOException $e){ 54 print "只今メンテナンス中の為、ご迷惑をお掛けしております"; 55 die(); 56 } 57 58 ?> 59 60</body> 61 62</html>
新規アカウント作成ファイル
php
1<!DOCTYPE HTML> 2<html lang="jp"> 3 4<head> 5 <meta charset="utf-8"> 6</head> 7 8<body> 9<!-- 初期化 --> 10 <?php 11 12 try{ 13 14 require_once("../../../../confidential/detabaseAccses.php"); 15 16//POSTの受け取り 17 $userName = $_POST["userName"]; 18 $password = $_POST["password"]; 19 20 21 $email = $_POST["email"]; 22 $phoneNumber = $_POST["phoneNumber"]; 23 $fullName = $_POST["fullName"]; 24 $postalCode = $_POST["postalCode"]; 25 $streetAddress = $_POST["streetAddress"]; 26 27 $year = $_POST["year"]; 28 $month = $_POST["month"]; 29 $day = $_POST["day"]; 30 31 $sex = $_POST["sex"]; 32 33 34//DBへのアカウント登録 35 36$passwordHash = password_hash($password, PASSWORD_DEFAULT); 37 38 39 40 $stmt = $dbh->prepare('INSERT INTO user (userName,password,email,phoneNumber,fullName,postalCode,streetAddress,year,month,day,sex) values(?,?,?,?,?,?,?,?,?,?,?)'); 41 $stmt->bindValue(1,$userName,PDO::PARAM_STR); 42 $stmt->bindValue(2,$passwordHash,PDO::PARAM_STR); 43 44 $stmt->bindValue(3,$email,PDO::PARAM_STR); 45 $stmt->bindValue(4,$phoneNumber,PDO::PARAM_INT); 46 $stmt->bindValue(5,$fullName,PDO::PARAM_STR); 47 $stmt->bindValue(6,$postalCode,PDO::PARAM_INT); 48 $stmt->bindValue(7,$streetAddress,PDO::PARAM_STR); 49 50 $stmt->bindValue(8,$year,PDO::PARAM_INT); 51 $stmt->bindValue(9,$month,PDO::PARAM_INT); 52 $stmt->bindValue(10,$day,PDO::PARAM_INT); 53 $stmt->bindValue(11,$sex,PDO::PARAM_STR); 54 $stmt->execute(); 55 56//そのままログイン処理 57 $eot = <<< EOM 58 <form method="POST" name="moveTo" action="../../login/main/checkLogin.php"> 59 <input type="hidden" value="$userName" name="userName"> 60 <input type="hidden" value="$password" name="aleadyHashPassword"> 61 </form> 62 63 <script language="javascript" type="text/javascript"> 64 function moveTocheckLogin(){ 65 document.moveTo.submit(); 66 } 67 moveTocheckLogin() 68 </script> 69EOM; 70 echo $eot; 71 //その他 72 }catch(PDOException $e){ 73 print "只今メンテナンス中の為大変ご迷惑をお掛けしております"; 74 die(); 75 } 76 ?> 77 78 79 80 81</body> 82 83</html> 84 85 86 87
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/16 13:34 編集
2020/09/16 13:14 編集
2020/09/16 13:20
2020/09/16 13:33
2020/09/16 13:37