回答編集履歴
1
解決しました。
test
CHANGED
@@ -1,16 +1,76 @@
|
|
1
|
-
|
1
|
+
無事ログイン認証できました。下記は成功したコードです。
|
2
2
|
|
3
|
-
|
3
|
+
```ここに言語を入力
|
4
4
|
|
5
|
-
|
5
|
+
---loginForm.php---
|
6
6
|
|
7
|
+
|
8
|
+
|
9
|
+
if($_POST != null){
|
10
|
+
|
11
|
+
require_once 'logfor.php';
|
12
|
+
|
13
|
+
require_once 'db.php';
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
$log = new login();
|
18
|
+
|
19
|
+
$log->setId($_POST["id"]);
|
20
|
+
|
21
|
+
$log->setPass($_POST["pass"]);---POSTで受け取った値をgetterに入れます。
|
22
|
+
|
23
|
+
$db = new db();
|
24
|
+
|
25
|
+
$db::logining($log); ---ログイン認証のメソッドを実行します。(下記参照)
|
26
|
+
|
27
|
+
}
|
28
|
+
|
7
|
-
|
29
|
+
```
|
8
30
|
|
9
31
|
|
10
32
|
|
11
33
|
```ここに言語を入力
|
12
34
|
|
35
|
+
function logining($log){
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
$db1 = self::access(); ---同じクラス内のデータベース接続メソッド(下記にあります。)
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
$id = $log->getId();
|
44
|
+
|
45
|
+
$pass = $log->getPass();
|
46
|
+
|
47
|
+
$sql = "select * from muser where user_id = '".$id."' AND user_pass = '".$pass."'"; ---setterで値を受け取りsql文作成
|
48
|
+
|
49
|
+
$result = $db1->query($sql);---結果をオブジェクトでもらい
|
50
|
+
|
51
|
+
$arr = $result->fetch(PDO::FETCH_ASSOC); ---配列に変換?
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
if($arr["USER_ID"] === $id AND $arr["USER_PASS"] === $pass){
|
56
|
+
|
57
|
+
header("Location:main.php");
|
58
|
+
|
59
|
+
exit();
|
60
|
+
|
61
|
+
}else{
|
62
|
+
|
63
|
+
header("Location:loginForm.php");
|
64
|
+
|
65
|
+
exit();
|
66
|
+
|
67
|
+
}
|
68
|
+
|
69
|
+
```
|
70
|
+
|
71
|
+
```ここに言語を入力
|
72
|
+
|
13
|
-
|
73
|
+
function access()
|
14
74
|
|
15
75
|
{
|
16
76
|
|
@@ -48,60 +108,16 @@
|
|
48
108
|
|
49
109
|
|
50
110
|
|
51
|
-
これを実行すると、データベース接続成功と表示されます。
|
52
111
|
|
53
112
|
|
54
113
|
|
55
114
|
|
115
|
+
原因はlogin.phpとdb.phpで二度インスタンス生成しているため、db.phpで値を受け取ろうとしてもうまく受け取れず、SQL文がおかしくなりqueryの結果がbooleanになるのだとわかりました。(受け取った値はNULLになっていました。)
|
56
116
|
|
57
117
|
|
58
118
|
|
59
|
-
|
119
|
+
if文ですが、var_dumpしてみたらなぜだめなのかすぐにわかりました。
|
60
|
-
|
61
|
-
```ここに言語を入力
|
62
|
-
|
63
|
-
<?php
|
64
|
-
|
65
|
-
require 'db.php';
|
66
|
-
|
67
|
-
require "logfor.php";
|
68
120
|
|
69
121
|
|
70
122
|
|
71
|
-
$db1 = new db();
|
72
|
-
|
73
|
-
$db = $db1::access(); ーーーデータベース接続
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
$login = new login();
|
78
|
-
|
79
|
-
$us = "Gib";
|
80
|
-
|
81
|
-
$login->setId($us);
|
82
|
-
|
83
|
-
$id = $login->getId();
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
$sql = "select * from muser where user_id = '".$id."'";
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
123
|
+
力を貸してくれた皆様に感謝しています。ありがとうございました。
|
92
|
-
|
93
|
-
$arr = $result->fetch(PDO::FETCH_ASSOC);
|
94
|
-
|
95
|
-
foreach($arr as $out){
|
96
|
-
|
97
|
-
echo $out;
|
98
|
-
|
99
|
-
}
|
100
|
-
|
101
|
-
?>
|
102
|
-
|
103
|
-
```
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
なぜなのかわかりませんが、メソッドを呼び出すと実行できないのかなと考えている状況です。
|