質問編集履歴

3

追記を修正

2021/11/30 02:46

投稿

yayochan_0305
yayochan_0305

スコア1

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接続処理は、仕様変更で要となったので削除しました

2021/11/30 02:46

投稿

yayochan_0305
yayochan_0305

スコア1

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関連でいただいたアドバイスの試行結果についても追記しました

2021/11/30 02:44

投稿

yayochan_0305
yayochan_0305

スコア1

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=Admin6211";
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>電子帳簿管理システム</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 = "Admin6211";
105
+ $password = "pospos";
136
106
 
137
107
  try {
138
108
 
@@ -148,7 +118,7 @@
148
118
 
149
119
  //ユーザー情報の照合
150
120
 
151
- $sql = "SELECT * FROM ms_user WHERE user_id = :user_id";
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