質問編集履歴

3

コードを変更しました

2021/10/09 14:26

投稿

rumichan
rumichan

スコア6

test CHANGED
File without changes
test CHANGED
@@ -126,6 +126,12 @@
126
126
 
127
127
 
128
128
 
129
+ $hash = "password_hash($_POST["password"], PASSWORD_DEFAULT)";
130
+
131
+
132
+
133
+
134
+
129
135
  require_once("dbconnect.php");
130
136
 
131
137
  $sql = "SELECT * FROM users WHERE username=:username";
@@ -134,8 +140,6 @@
134
140
 
135
141
  $stmt->bindValue(":username", $_POST["username"], PDO::PARAM_STR);
136
142
 
137
- $stmt->bindValue(":password", $_POST["password"], PDO::PARAM_STR);
138
-
139
143
  $stmt->execute();
140
144
 
141
145
  $row = $stmt->fetch(PDO::FETCH_ASSOC);
@@ -144,7 +148,7 @@
144
148
 
145
149
  //入力情報がDB内に登録されているか確認
146
150
 
147
- if(empty($row["username"])){
151
+ if(empty($row["username"]),password_verify($_POST['password'], $hash['password'])){
148
152
 
149
153
  //認証失敗
150
154
 
@@ -172,6 +176,8 @@
172
176
 
173
177
  ?>
174
178
 
179
+
180
+
175
181
  ```
176
182
 
177
183
  コード上から、新規登録ページ → その処理 → ログインフォームの処理 になっています。

2

更新

2021/10/09 14:26

投稿

rumichan
rumichan

スコア6

test CHANGED
File without changes
test CHANGED
@@ -128,7 +128,7 @@
128
128
 
129
129
  require_once("dbconnect.php");
130
130
 
131
- $sql = "SELECT * FROM users WHERE username=:username AND password=:password";
131
+ $sql = "SELECT * FROM users WHERE username=:username";
132
132
 
133
133
  $stmt = $pdo->prepare($sql);
134
134
 

1

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

2021/10/09 14:05

投稿

rumichan
rumichan

スコア6

test CHANGED
File without changes
test CHANGED
@@ -134,7 +134,7 @@
134
134
 
135
135
  $stmt->bindValue(":username", $_POST["username"], PDO::PARAM_STR);
136
136
 
137
- $stmt->bindValue(":password", password_hash($_POST["password"],PASSWORD_DEFAULT), PDO::PARAM_STR);
137
+ $stmt->bindValue(":password", $_POST["password"], PDO::PARAM_STR);
138
138
 
139
139
  $stmt->execute();
140
140
 
@@ -144,14 +144,12 @@
144
144
 
145
145
  //入力情報がDB内に登録されているか確認
146
146
 
147
- if(empty($row["username"])(password_verify($_POST["password"],$hash_pass["password"], $row["username"]))){
147
+ if(empty($row["username"])){
148
148
 
149
149
  //認証失敗
150
150
 
151
151
  header("Location: login.php?err=2");
152
152
 
153
- echo "ユーザ名又はパスワードが間違っています。";
154
-
155
153
  exit();
156
154
 
157
155
  //session情報がある時はマイページヘリダイレクト
@@ -192,8 +190,12 @@
192
190
 
193
191
 
194
192
 
195
- そこで、login認証の画面で、登録しusernameとハッシュ化たパスワードを認証する部分(3つ目のコード//入力情報がDB内に登録さているか確)で、データベースから取得した$rowとハッシュ化したパスワードを認証したコードをかてみたのですが、うまくいきません。
193
+ データベースに登録しているusernameが正認証したいのですが、
196
-
194
+
195
+
196
+
197
- ハッシュ化されたパスワードの認証の仕方が間違っているしょうか。?
197
+ なぜかハッシュ化されている情報だけ、ログインきない状況です
198
+
198
-
199
+ ハッシュ化されていない情報のユーザーネームとパスワードを入力したら、ログインできます。
200
+
199
- 教えて頂きたです。よろくお願します
201
+ この違はどこがおかしいのでそゆか。??