質問編集履歴
3
追記を修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -182,8 +182,4 @@
|
|
182
182
|
|
183
183
|
var_dump($_POST)は試したうえで、値が取れていたことを確認しました。
|
184
184
|
|
185
|
-
var_dump(password_hash($_POST['pass']));とvar_dump($member['pass']);については、
|
186
|
-
|
187
|
-
マニュアルを見る感じだともう一つパラメータが必要なのかなと思いますが、ちょっと今試行錯誤してます。
|
188
|
-
|
189
|
-
> Fatal error: Uncaught ArgumentCountError: password_hash() expects at least 2 arguments, 1 given in C:\xampp\htdocs\denshi\login.php:38 Stack trace: #0 C:\xampp\htdocs\denshi\login.php(38): password_hash('test03') #1 {main} thrown in C:\xampp\htdocs\denshi\login.php on line 38
|
185
|
+
var_dump(password_hash($_POST['pass'], PASSWORD_DEFAULT));とvar_dump($member['pass']);については、前者はハッシュ値、後者はあらかじめDBに登録しているパスワードが出力されました。
|
2
login_form.phpのDB接続処理は、仕様変更で要となったので削除しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -25,30 +25,6 @@
|
|
25
25
|
<html>
|
26
26
|
|
27
27
|
<body>
|
28
|
-
|
29
|
-
<?php
|
30
|
-
|
31
|
-
//①PostgreDB接続
|
32
|
-
|
33
|
-
$conn = "host=localhost dbname=postgres user=postgres password=pospos";
|
34
|
-
|
35
|
-
$link = pg_connect($conn);
|
36
|
-
|
37
|
-
if (!$link) {
|
38
|
-
|
39
|
-
die('接続失敗です。'.pg_last_error());
|
40
|
-
|
41
|
-
}
|
42
|
-
|
43
|
-
//②DBから内容を取得
|
44
|
-
|
45
|
-
$ms_names = pg_query('SELECT user_name FROM public.ms_user;');
|
46
|
-
|
47
|
-
$user_names = pg_fetch_all($ms_names);
|
48
|
-
|
49
|
-
$user = array_column($user_names,'user_name');
|
50
|
-
|
51
|
-
?>
|
52
28
|
|
53
29
|
<form name="login_form" action="login.php" method="post">
|
54
30
|
|
1
・ご指摘いただいた通り、DBについて記載しました。登録処理はひとまずログインだけ先に実装しようとしているので未実装です。また、var_dump関連でいただいたアドバイスの試行結果についても追記しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
//①PostgreDB接続
|
32
32
|
|
33
|
-
$conn = "host=localhost dbname=postgres user=postgres password=
|
33
|
+
$conn = "host=localhost dbname=postgres user=postgres password=pospos";
|
34
34
|
|
35
35
|
$link = pg_connect($conn);
|
36
36
|
|
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
<div class="login_form_top">
|
56
56
|
|
57
|
-
<h1>
|
57
|
+
<h1>〇〇システム</h1>
|
58
58
|
|
59
59
|
</div>
|
60
60
|
|
@@ -62,36 +62,6 @@
|
|
62
62
|
|
63
63
|
<br>
|
64
64
|
|
65
|
-
<!--セレクトボックスを表示する-->
|
66
|
-
|
67
|
-
<label>ユーザー名:<label>
|
68
|
-
|
69
|
-
<?php
|
70
|
-
|
71
|
-
// ユーザー名を所持している場合は、Select出力をする
|
72
|
-
|
73
|
-
if (!empty($user_names)){
|
74
|
-
|
75
|
-
echo "<select name='user_name'>";
|
76
|
-
|
77
|
-
}
|
78
|
-
|
79
|
-
foreach ($user_names as $user) {
|
80
|
-
|
81
|
-
echo '<option value="">'.current($user).'</option>';
|
82
|
-
|
83
|
-
}
|
84
|
-
|
85
|
-
if (!empty($user_names)){
|
86
|
-
|
87
|
-
echo "</select>";
|
88
|
-
|
89
|
-
}
|
90
|
-
|
91
|
-
?>
|
92
|
-
|
93
|
-
<br>
|
94
|
-
|
95
65
|
<label>ユーザーID:<label>
|
96
66
|
|
97
67
|
<input type="id" name="user_id" placeholder="ユーザーIDを入力してください"><br>
|
@@ -132,7 +102,7 @@
|
|
132
102
|
|
133
103
|
$username = "postgres";
|
134
104
|
|
135
|
-
$password = "
|
105
|
+
$password = "pospos";
|
136
106
|
|
137
107
|
try {
|
138
108
|
|
@@ -148,7 +118,7 @@
|
|
148
118
|
|
149
119
|
//ユーザー情報の照合
|
150
120
|
|
151
|
-
$sql = "SELECT
|
121
|
+
$sql = "SELECT user_id,password FROM ms_user WHERE user_id = :user_id";
|
152
122
|
|
153
123
|
$stmt = $dbh->prepare($sql);
|
154
124
|
|
@@ -162,15 +132,13 @@
|
|
162
132
|
|
163
133
|
//パスワードにマッチしているかチェック
|
164
134
|
|
165
|
-
if (password_verify(@$_POST['pass'], @$member['pass'])) {
|
135
|
+
if (password_verify(@$_POST['pass'], @$member['password'])) {
|
166
136
|
|
167
137
|
//DBのユーザー情報をセッションに保存
|
168
138
|
|
169
|
-
$_SESSION['user_name'] = $member['user_name'];
|
170
|
-
|
171
139
|
$_SESSION['user_id'] = $member['user_id'];
|
172
140
|
|
173
|
-
$_SESSION['pass'] = $member['pass'];
|
141
|
+
$_SESSION['pass'] = $member['password'];
|
174
142
|
|
175
143
|
$msg = 'ログインしました。';
|
176
144
|
|
@@ -198,6 +166,26 @@
|
|
198
166
|
|
199
167
|
|
200
168
|
|
169
|
+
### DBについて
|
170
|
+
|
171
|
+
テーブル名:ms_user
|
172
|
+
|
173
|
+
項目 :
|
174
|
+
|
175
|
+
user_id(character varying(50))→ユーザーID
|
176
|
+
|
177
|
+
user_name(character varying(20))→ユーザー名
|
178
|
+
|
179
|
+
password(character varying(30))→パスワード
|
180
|
+
|
181
|
+
auth(character varying(2))→権限
|
182
|
+
|
183
|
+
※今回使うのは、user_idとpasswordです。
|
184
|
+
|
185
|
+
また、今回は単純にDBに先に流し込んでおいたデータを用いてひとまずログインを、という考え方でやっておりますので、登録処理については未実装です。
|
186
|
+
|
187
|
+
|
188
|
+
|
201
189
|
### 試したこと
|
202
190
|
|
203
191
|
|
@@ -211,3 +199,15 @@
|
|
211
199
|
また、SQLについては、A5Mk2で流してみておそらく正しいことを確認しています。
|
212
200
|
|
213
201
|
完全に手づまりな状態です。助力いただければ幸いです。
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
【2021/11/30 追記】
|
206
|
+
|
207
|
+
var_dump($_POST)は試したうえで、値が取れていたことを確認しました。
|
208
|
+
|
209
|
+
var_dump(password_hash($_POST['pass']));とvar_dump($member['pass']);については、後者は値が取れているのですが、前者は下記のエラーが発生しています。
|
210
|
+
|
211
|
+
マニュアルを見る感じだともう一つパラメータが必要なのかなと思いますが、ちょっと今試行錯誤してます。
|
212
|
+
|
213
|
+
> Fatal error: Uncaught ArgumentCountError: password_hash() expects at least 2 arguments, 1 given in C:\xampp\htdocs\denshi\login.php:38 Stack trace: #0 C:\xampp\htdocs\denshi\login.php(38): password_hash('test03') #1 {main} thrown in C:\xampp\htdocs\denshi\login.php on line 38
|