teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

コードを変更しました

2021/10/09 14:26

投稿

rumichan
rumichan

スコア6

title CHANGED
File without changes
body CHANGED
@@ -62,16 +62,18 @@
62
62
  exit();
63
63
  }
64
64
 
65
+ $hash = "password_hash($_POST["password"], PASSWORD_DEFAULT)";
66
+
67
+
65
68
  require_once("dbconnect.php");
66
69
  $sql = "SELECT * FROM users WHERE username=:username";
67
70
  $stmt = $pdo->prepare($sql);
68
71
  $stmt->bindValue(":username", $_POST["username"], PDO::PARAM_STR);
69
- $stmt->bindValue(":password", $_POST["password"], PDO::PARAM_STR);
70
72
  $stmt->execute();
71
73
  $row = $stmt->fetch(PDO::FETCH_ASSOC);
72
74
 
73
75
  //入力情報がDB内に登録されているか確認
74
- if(empty($row["username"])){
76
+ if(empty($row["username"]),password_verify($_POST['password'], $hash['password'])){
75
77
  //認証失敗
76
78
  header("Location: login.php?err=2");
77
79
  exit();
@@ -85,6 +87,7 @@
85
87
  header("Location: mypage.php");
86
88
  }
87
89
  ?>
90
+
88
91
  ```
89
92
  コード上から、新規登録ページ → その処理 → ログインフォームの処理 になっています。
90
93
 

2

更新

2021/10/09 14:26

投稿

rumichan
rumichan

スコア6

title CHANGED
File without changes
body CHANGED
@@ -63,7 +63,7 @@
63
63
  }
64
64
 
65
65
  require_once("dbconnect.php");
66
- $sql = "SELECT * FROM users WHERE username=:username AND password=:password";
66
+ $sql = "SELECT * FROM users WHERE username=:username";
67
67
  $stmt = $pdo->prepare($sql);
68
68
  $stmt->bindValue(":username", $_POST["username"], PDO::PARAM_STR);
69
69
  $stmt->bindValue(":password", $_POST["password"], PDO::PARAM_STR);

1

usernameだけ認証するようにしました

2021/10/09 14:05

投稿

rumichan
rumichan

スコア6

title CHANGED
File without changes
body CHANGED
@@ -66,15 +66,14 @@
66
66
  $sql = "SELECT * FROM users WHERE username=:username AND password=:password";
67
67
  $stmt = $pdo->prepare($sql);
68
68
  $stmt->bindValue(":username", $_POST["username"], PDO::PARAM_STR);
69
- $stmt->bindValue(":password", password_hash($_POST["password"],PASSWORD_DEFAULT), PDO::PARAM_STR);
69
+ $stmt->bindValue(":password", $_POST["password"], PDO::PARAM_STR);
70
70
  $stmt->execute();
71
71
  $row = $stmt->fetch(PDO::FETCH_ASSOC);
72
72
 
73
73
  //入力情報がDB内に登録されているか確認
74
- if(empty($row["username"])(password_verify($_POST["password"],$hash_pass["password"], $row["username"]))){
74
+ if(empty($row["username"])){
75
75
  //認証失敗
76
76
  header("Location: login.php?err=2");
77
- echo "ユーザ名又はパスワードが間違っています。";
78
77
  exit();
79
78
  //session情報がある時はマイページヘリダイレクト
80
79
  if(isset($_SESSION["login"])){
@@ -95,6 +94,8 @@
95
94
 
96
95
  パスワードをハッシュ化したほうが良いと指摘されましたので、hashしたパスワードを登録する処理をかきました。(コード2つ目)
97
96
 
98
- そこで、login認証の画面で、登録したusernameとハッシュ化したパスワドを認証する部分(3つ目のコド//入力情報がDB内に登録されているか確認)で、データベースから取得た$rowとハッシュ化したパスワードを認証したコードをかてみたのですが、うまくいきません。
97
+ タベに登録ているusernameが正ければ認証したいのですが、
98
+
99
- ハッシュ化されたパスワードの認証の仕方が間違っているしょうか。?
99
+ なぜかハッシュ化されている情報だけ、ログインきない状況です
100
+ ハッシュ化されていない情報のユーザーネームとパスワードを入力したら、ログインできます。
100
- 教えて頂きたです。よろしく願います
101
+ この違はどこがいのでそゆか。??