回答編集履歴

1

解決しました。

2018/07/13 02:06

投稿

rockstar
rockstar

スコア9

test CHANGED
@@ -1,16 +1,76 @@
1
- 昨日のデータベース接続部分を添付しました、確認お願いします。
1
+ 無事ログイン認証できました。下記は成功したコードです。
2
2
 
3
- login.phpの
3
+ ```ここに言語を入力
4
4
 
5
- $db::logining($pdo); ---メソッドの呼び出し
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
- function access()
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
- $result = $db->query($sql);
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
- なぜなのかわかりませんが、メソッドを呼び出すと実行できないのかなと考えている状況です。