質問編集履歴
8
文章を修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
提示コードですが参考サイトと同じようにコードを真似たのですが以下の警告文が表示されて上手く値を取得できません。どうやってデーターベースの一致している値を取得するのでしょうか?
|
2
2
|
|
3
3
|
```
|
4
|
-
Warning:
|
4
|
+
Warning: Undefined array key "password" in /opt/lampp/htdocs/sample/loginCheck.php on line 35
|
5
5
|
|
6
|
-
Deprecated: password_verify(): Passing null to parameter #2 ($hash) of type string is deprecated in /opt/lampp/htdocs/sample/loginCheck.php on line 3
|
6
|
+
Deprecated: password_verify(): Passing null to parameter #2 ($hash) of type string is deprecated in /opt/lampp/htdocs/sample/loginCheck.php on line 35
|
7
7
|
```
|
8
8
|
|
9
9
|
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-02-09/b3cf5b82-7b0e-4f42-adcd-f9915181b3d5.png)
|
@@ -38,18 +38,15 @@
|
|
38
38
|
$dsn = 'mysql:dbname=Bulletin_Board;host=localhost;charset=utf8';
|
39
39
|
$dbh = new PDO($dsn,"root","");
|
40
40
|
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
|
41
|
-
$sql = 'SELECT name FROM Account WHERE ID=
|
41
|
+
$sql = 'SELECT name FROM Account WHERE ID = :id;';
|
42
42
|
$stmt = $dbh->prepare($sql);
|
43
|
-
$stmt->bindParam(':
|
43
|
+
$stmt->bindParam(':id', $_POST['id']);
|
44
|
-
$data[] = $id;
|
45
|
-
$da
|
44
|
+
//$stmt->bindParam(':password', $password);
|
46
|
-
$stmt->execute(
|
45
|
+
$stmt->execute();
|
47
|
-
|
48
46
|
|
49
47
|
|
50
48
|
$result = $stmt->fetch();
|
51
|
-
|
52
|
-
if(password_verify($_POST[
|
49
|
+
if(password_verify($_POST["password"],$result['password']) == true)
|
53
50
|
{
|
54
51
|
echo true;
|
55
52
|
}
|
@@ -66,6 +63,11 @@
|
|
66
63
|
die($e->getMessage());
|
67
64
|
}
|
68
65
|
?>
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
|
69
71
|
</body>
|
70
72
|
|
71
73
|
</html>
|
7
文章を修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
php
|
1
|
+
php パズワードが一致しているかどうかのを判定する方法が知りたい。
|
test
CHANGED
@@ -1,15 +1,17 @@
|
|
1
|
-
提示コードですが
|
1
|
+
提示コードですが参考サイトと同じようにコードを真似たのですが以下の警告文が表示されて上手く値を取得できません。どうやってデーターベースの一致している値を取得するのでしょうか?
|
2
2
|
|
3
|
-
|
3
|
+
```
|
4
|
-
password_hash: https://www.php.net/manual/ja/function.password-hash.php
|
5
|
-
password_verify: https://www.php.net/manual/ja/function.password-verify.php
|
6
|
-
|
4
|
+
Warning: Trying to access array offset on value of type bool in /opt/lampp/htdocs/sample/loginCheck.php on line 38
|
7
|
-
戻り値の型: https://www.php.net/manual/ja/class.pdostatement.php
|
8
5
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
Deprecated: password_verify(): Passing null to parameter #2 ($hash) of type string is deprecated in /opt/lampp/htdocs/sample/loginCheck.php on line 38
|
7
|
+
```
|
8
|
+
|
9
|
+
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-02-09/b3cf5b82-7b0e-4f42-adcd-f9915181b3d5.png)
|
10
|
+
|
11
|
+
参考サイト: https://qiita.com/MasaKu_n/items/51552aa0331f3ae90dae
|
12
|
+
|
13
|
+
|
14
|
+
```
|
13
15
|
<!DOCTYPE html>
|
14
16
|
<html lang=ja>
|
15
17
|
<head>
|
@@ -38,6 +40,7 @@
|
|
38
40
|
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
|
39
41
|
$sql = 'SELECT name FROM Account WHERE ID=? AND password=?';
|
40
42
|
$stmt = $dbh->prepare($sql);
|
43
|
+
$stmt->bindParam(':ID', $_POST['id']);
|
41
44
|
$data[] = $id;
|
42
45
|
$data[] = $password;
|
43
46
|
$stmt->execute($data);
|
@@ -63,16 +66,8 @@
|
|
63
66
|
die($e->getMessage());
|
64
67
|
}
|
65
68
|
?>
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
69
|
</body>
|
72
70
|
|
73
71
|
</html>
|
74
72
|
|
75
73
|
```
|
76
|
-
|
77
|
-
|
78
|
-
|
6
提示コードを修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -41,16 +41,20 @@
|
|
41
41
|
$data[] = $id;
|
42
42
|
$data[] = $password;
|
43
43
|
$stmt->execute($data);
|
44
|
+
|
44
45
|
|
46
|
+
|
45
|
-
|
47
|
+
$result = $stmt->fetch();
|
48
|
+
|
49
|
+
if(password_verify($_POST['password'],$result['password']) == true)
|
46
50
|
{
|
47
|
-
echo
|
51
|
+
echo true;
|
48
52
|
}
|
49
53
|
else
|
50
54
|
{
|
51
|
-
echo
|
55
|
+
echo false;
|
52
56
|
}
|
53
|
-
|
57
|
+
|
54
58
|
|
55
59
|
|
56
60
|
}
|
@@ -70,62 +74,5 @@
|
|
70
74
|
|
71
75
|
```
|
72
76
|
|
73
|
-
##### 登録
|
74
|
-
```php
|
75
|
-
<!DOCTYPE html>
|
76
|
-
<html lang=ja>
|
77
|
-
<head>
|
78
|
-
<meta charset="utf-8">
|
79
|
-
|
80
|
-
<link rel="stylesheet" href="style.css">
|
81
|
-
<title>send</title>
|
82
|
-
</head>
|
83
|
-
|
84
|
-
<body>
|
85
|
-
|
86
|
-
<?php
|
87
|
-
ini_set("display_errors",1);
|
88
|
-
error_reporting(E_ALL);
|
89
|
-
?>
|
90
|
-
|
91
|
-
<h1 class="center"> 登録確認 </h1>
|
92
|
-
|
93
|
-
<?php
|
94
77
|
|
95
78
|
|
96
|
-
$name = $_POST["userName"];
|
97
|
-
$id = $_POST["id"];
|
98
|
-
$mail = $_POST["mail"];
|
99
|
-
$password1 = password_hash($_POST["1password"],PASSWORD_DEFAULT);
|
100
|
-
$password2 = password_hash($_POST["2password"],PASSWORD_DEFAULT);
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
try
|
105
|
-
{
|
106
|
-
$dsn = 'mysql:dbname=Bulletin_Board;host=localhost;charset=utf8';
|
107
|
-
$dbh = new PDO($dsn,"root","");
|
108
|
-
|
109
|
-
$sql = 'INSERT INTO `Account`(`name`,`ID`,`password`,`mail`) VALUES (?,?,?,?)';
|
110
|
-
$stmt = $dbh->prepare($sql);
|
111
|
-
$data[] = $name;
|
112
|
-
$data[] = $id;
|
113
|
-
$data[] = $password1;
|
114
|
-
$data[] = $mail;
|
115
|
-
|
116
|
-
$stmt->execute($data);
|
117
|
-
|
118
|
-
}
|
119
|
-
catch(PDOException $e)
|
120
|
-
{
|
121
|
-
die($e->getMessage());
|
122
|
-
}
|
123
|
-
|
124
|
-
?>
|
125
|
-
</body>
|
126
|
-
|
127
|
-
</html>
|
128
|
-
```
|
129
|
-
|
130
|
-
|
131
|
-
|
5
文章を修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
提示コードですが登録ソースファイルがアカウントの登録画面でその登録した情報をログイン確認ソースファイルで参照して一致するものがあるかどうかをチェックしたいのですがその際に`password_verify()`関数を使って入力したものを抽出したものが一致しているかどうかを確認したいのですが値の取り出し方法がわかりません。
|
2
2
|
|
3
|
+
参考サイト: https://qiita.com/wakahara3/items/792943c1e0ed7a87e1ef
|
3
4
|
password_hash: https://www.php.net/manual/ja/function.password-hash.php
|
4
5
|
password_verify: https://www.php.net/manual/ja/function.password-verify.php
|
5
6
|
$dbh->prepare($sql)の戻り値: https://www.javadrive.jp/php/pdo/index8.html
|
4
文章を修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
php
|
1
|
+
php password_hash()関数を使ったハッシュ値同士を比較する方法が知りたい。
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
提示コードですが登録ソースファイルがアカウントの登録画面でその登録した情報をログイン確認ソースファイルで参照して一致するものがあるかどうかをチェックし
|
1
|
+
提示コードですが登録ソースファイルがアカウントの登録画面でその登録した情報をログイン確認ソースファイルで参照して一致するものがあるかどうかをチェックしたいのですがその際に`password_verify()`関数を使って入力したものを抽出したものが一致しているかどうかを確認したいのですが値の取り出し方法がわかりません。
|
2
2
|
|
3
3
|
password_hash: https://www.php.net/manual/ja/function.password-hash.php
|
4
4
|
password_verify: https://www.php.net/manual/ja/function.password-verify.php
|
3
質問内容を修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
php
|
1
|
+
php $dbh->prepare($sql);の戻り値の値を取り出したい
|
test
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
提示コードですが登録ソースファイルがアカウントの登録画面でその登録した情報をログイン確認ソースファイルで参照して一致するものがあるかどうかをチェックしているのですが
|
1
|
+
提示コードですが登録ソースファイルがアカウントの登録画面でその登録した情報をログイン確認ソースファイルで参照して一致するものがあるかどうかをチェックしているのですがその戻り値の値を取り出して`password_verify()`関数を使って入力したものを抽出したものが一致しているかどうかを確認したいのですが取り出し方法がわかりません。
|
2
|
-
|
3
2
|
|
4
3
|
password_hash: https://www.php.net/manual/ja/function.password-hash.php
|
4
|
+
password_verify: https://www.php.net/manual/ja/function.password-verify.php
|
5
|
+
$dbh->prepare($sql)の戻り値: https://www.javadrive.jp/php/pdo/index8.html
|
6
|
+
戻り値の型: https://www.php.net/manual/ja/class.pdostatement.php
|
5
7
|
|
6
8
|
参考書籍: https://www.amazon.co.jp/%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BFPHP-%E6%94%B9%E8%A8%82%E7%89%88-%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8C%E3%82%8B%E4%BA%BA%E3%81%AB%E3%81%AA%E3%82%8B-%E8%B0%B7%E8%97%A4-%E8%B3%A2%E4%B8%80/dp/4865940650/ref=sr_1_1?crid=10933QO8OYKJZ&keywords=%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BFphp+%E6%94%B9%E8%A8%82%E7%89%88&qid=1644381263&sprefix=%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BF%2Caps%2C174&sr=8-1
|
7
9
|
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-02-09/8e165ba8-9882-4b7f-afe0-7ede9f01951e.png)
|
2
参考サイトを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
提示コードですが登録ソースファイルがアカウントの登録画面でその登録した情報をログイン確認ソースファイルで参照して一致するものがあるかどうかをチェックしているのですがecho false が表示されてしいます。またデーターベースではしっかりと値が入っていることを確認しました。またパスワードを暗号化としてpassword_hash()を使っています。
|
2
|
+
|
3
|
+
|
4
|
+
password_hash: https://www.php.net/manual/ja/function.password-hash.php
|
2
5
|
|
3
6
|
参考書籍: https://www.amazon.co.jp/%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BFPHP-%E6%94%B9%E8%A8%82%E7%89%88-%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8C%E3%82%8B%E4%BA%BA%E3%81%AB%E3%81%AA%E3%82%8B-%E8%B0%B7%E8%97%A4-%E8%B3%A2%E4%B8%80/dp/4865940650/ref=sr_1_1?crid=10933QO8OYKJZ&keywords=%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BFphp+%E6%94%B9%E8%A8%82%E7%89%88&qid=1644381263&sprefix=%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BF%2Caps%2C174&sr=8-1
|
4
7
|
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-02-09/8e165ba8-9882-4b7f-afe0-7ede9f01951e.png)
|
1
文章を修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
提示コードですが登録ソースファイルがアカウントの登録画面でその登録した情報をログイン確認ソースファイルで参照して一致するものがあるかどうかをチェックしているのですがecho false が表示されてしいます。またデーターベースではしっかりと値が入っていることを確認しました。またパスワードを暗号化としてpassword_hash()を使っています。
|
2
|
+
|
3
|
+
参考書籍: https://www.amazon.co.jp/%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BFPHP-%E6%94%B9%E8%A8%82%E7%89%88-%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8C%E3%82%8B%E4%BA%BA%E3%81%AB%E3%81%AA%E3%82%8B-%E8%B0%B7%E8%97%A4-%E8%B3%A2%E4%B8%80/dp/4865940650/ref=sr_1_1?crid=10933QO8OYKJZ&keywords=%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BFphp+%E6%94%B9%E8%A8%82%E7%89%88&qid=1644381263&sprefix=%E6%B0%97%E3%81%A5%E3%81%91%E3%81%B0%E3%83%97%E3%83%AD%E4%B8%A6%E3%81%BF%2Caps%2C174&sr=8-1
|
2
4
|
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-02-09/8e165ba8-9882-4b7f-afe0-7ede9f01951e.png)
|
3
5
|
#####ログイン確認
|
4
6
|
```php
|