質問編集履歴
3
追記を修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -90,6 +90,4 @@
|
|
90
90
|
|
91
91
|
【2021/11/30 追記】
|
92
92
|
var_dump($_POST)は試したうえで、値が取れていたことを確認しました。
|
93
|
-
var_dump(password_hash($_POST['pass']));とvar_dump($member['pass']);については、
|
94
|
-
マニュアルを見る感じだともう一つパラメータが必要なのかなと思いますが、ちょっと今試行錯誤してます。
|
95
|
-
> 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
|
93
|
+
var_dump(password_hash($_POST['pass'], PASSWORD_DEFAULT));とvar_dump($member['pass']);については、前者はハッシュ値、後者はあらかじめDBに登録しているパスワードが出力されました。
|
2
login_form.phpのDB接続処理は、仕様変更で要となったので削除しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -12,18 +12,6 @@
|
|
12
12
|
```php
|
13
13
|
<html>
|
14
14
|
<body>
|
15
|
-
<?php
|
16
|
-
//①PostgreDB接続
|
17
|
-
$conn = "host=localhost dbname=postgres user=postgres password=pospos";
|
18
|
-
$link = pg_connect($conn);
|
19
|
-
if (!$link) {
|
20
|
-
die('接続失敗です。'.pg_last_error());
|
21
|
-
}
|
22
|
-
//②DBから内容を取得
|
23
|
-
$ms_names = pg_query('SELECT user_name FROM public.ms_user;');
|
24
|
-
$user_names = pg_fetch_all($ms_names);
|
25
|
-
$user = array_column($user_names,'user_name');
|
26
|
-
?>
|
27
15
|
<form name="login_form" action="login.php" method="post">
|
28
16
|
<div class="login_form_top">
|
29
17
|
<h1>〇〇システム</h1>
|
1
・ご指摘いただいた通り、DBについて記載しました。登録処理はひとまずログインだけ先に実装しようとしているので未実装です。また、var_dump関連でいただいたアドバイスの試行結果についても追記しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
<body>
|
15
15
|
<?php
|
16
16
|
//①PostgreDB接続
|
17
|
-
$conn = "host=localhost dbname=postgres user=postgres password=
|
17
|
+
$conn = "host=localhost dbname=postgres user=postgres password=pospos";
|
18
18
|
$link = pg_connect($conn);
|
19
19
|
if (!$link) {
|
20
20
|
die('接続失敗です。'.pg_last_error());
|
@@ -26,25 +26,10 @@
|
|
26
26
|
?>
|
27
27
|
<form name="login_form" action="login.php" method="post">
|
28
28
|
<div class="login_form_top">
|
29
|
-
<h1>
|
29
|
+
<h1>〇〇システム</h1>
|
30
30
|
</div>
|
31
31
|
<div class="login_form">
|
32
32
|
<br>
|
33
|
-
<!--セレクトボックスを表示する-->
|
34
|
-
<label>ユーザー名:<label>
|
35
|
-
<?php
|
36
|
-
// ユーザー名を所持している場合は、Select出力をする
|
37
|
-
if (!empty($user_names)){
|
38
|
-
echo "<select name='user_name'>";
|
39
|
-
}
|
40
|
-
foreach ($user_names as $user) {
|
41
|
-
echo '<option value="">'.current($user).'</option>';
|
42
|
-
}
|
43
|
-
if (!empty($user_names)){
|
44
|
-
echo "</select>";
|
45
|
-
}
|
46
|
-
?>
|
47
|
-
<br>
|
48
33
|
<label>ユーザーID:<label>
|
49
34
|
<input type="id" name="user_id" placeholder="ユーザーIDを入力してください"><br>
|
50
35
|
<label>パスワード:<label>
|
@@ -65,7 +50,7 @@
|
|
65
50
|
//DB接続
|
66
51
|
$dsn = "pgsql:dbname=postgres host=localhost port=5432'";
|
67
52
|
$username = "postgres";
|
68
|
-
$password = "
|
53
|
+
$password = "pospos";
|
69
54
|
try {
|
70
55
|
$dbh = new PDO($dsn, $username, $password);
|
71
56
|
} catch (PDOException $e) {
|
@@ -73,18 +58,17 @@
|
|
73
58
|
}
|
74
59
|
|
75
60
|
//ユーザー情報の照合
|
76
|
-
$sql = "SELECT
|
61
|
+
$sql = "SELECT user_id,password FROM ms_user WHERE user_id = :user_id";
|
77
62
|
$stmt = $dbh->prepare($sql);
|
78
63
|
$stmt->bindValue(':user_id', $user_id);
|
79
64
|
$stmt->execute();
|
80
65
|
$member = $stmt->fetch();
|
81
66
|
|
82
67
|
//パスワードにマッチしているかチェック
|
83
|
-
if (password_verify(@$_POST['pass'], @$member['
|
68
|
+
if (password_verify(@$_POST['pass'], @$member['password'])) {
|
84
69
|
//DBのユーザー情報をセッションに保存
|
85
|
-
$_SESSION['user_name'] = $member['user_name'];
|
86
70
|
$_SESSION['user_id'] = $member['user_id'];
|
87
|
-
$_SESSION['pass'] = $member['
|
71
|
+
$_SESSION['pass'] = $member['password'];
|
88
72
|
$msg = 'ログインしました。';
|
89
73
|
$link = '<a href="menu.php">〇〇システム</a>';
|
90
74
|
}
|
@@ -98,10 +82,26 @@
|
|
98
82
|
<?php echo $link; ?>
|
99
83
|
```
|
100
84
|
|
85
|
+
### DBについて
|
86
|
+
テーブル名:ms_user
|
87
|
+
項目 :
|
88
|
+
user_id(character varying(50))→ユーザーID
|
89
|
+
user_name(character varying(20))→ユーザー名
|
90
|
+
password(character varying(30))→パスワード
|
91
|
+
auth(character varying(2))→権限
|
92
|
+
※今回使うのは、user_idとpasswordです。
|
93
|
+
また、今回は単純にDBに先に流し込んでおいたデータを用いてひとまずログインを、という考え方でやっておりますので、登録処理については未実装です。
|
94
|
+
|
101
95
|
### 試したこと
|
102
96
|
|
103
97
|
参考にしているのは、次のページです。
|
104
98
|
https://qiita.com/ryo-futebol/items/5fb635199acc2fcbd3ff
|
105
99
|
ひとまず、var_dump()で$memberの値が取れているのは確認しています。
|
106
100
|
また、SQLについては、A5Mk2で流してみておそらく正しいことを確認しています。
|
107
|
-
完全に手づまりな状態です。助力いただければ幸いです。
|
101
|
+
完全に手づまりな状態です。助力いただければ幸いです。
|
102
|
+
|
103
|
+
【2021/11/30 追記】
|
104
|
+
var_dump($_POST)は試したうえで、値が取れていたことを確認しました。
|
105
|
+
var_dump(password_hash($_POST['pass']));とvar_dump($member['pass']);については、後者は値が取れているのですが、前者は下記のエラーが発生しています。
|
106
|
+
マニュアルを見る感じだともう一つパラメータが必要なのかなと思いますが、ちょっと今試行錯誤してます。
|
107
|
+
> 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
|