回答編集履歴
1
解決しました。
answer
CHANGED
@@ -1,10 +1,40 @@
|
|
1
|
-
|
1
|
+
無事ログイン認証できました。下記は成功したコードです。
|
2
|
+
```ここに言語を入力
|
2
|
-
|
3
|
+
---loginForm.php---
|
3
|
-
$db::logining($pdo); ---メソッドの呼び出し
|
4
|
-
部分です。
|
5
4
|
|
5
|
+
if($_POST != null){
|
6
|
+
require_once 'logfor.php';
|
7
|
+
require_once 'db.php';
|
8
|
+
|
9
|
+
$log = new login();
|
10
|
+
$log->setId($_POST["id"]);
|
11
|
+
$log->setPass($_POST["pass"]);---POSTで受け取った値をgetterに入れます。
|
12
|
+
$db = new db();
|
13
|
+
$db::logining($log); ---ログイン認証のメソッドを実行します。(下記参照)
|
14
|
+
}
|
15
|
+
```
|
16
|
+
|
6
17
|
```ここに言語を入力
|
18
|
+
function logining($log){
|
19
|
+
|
20
|
+
$db1 = self::access(); ---同じクラス内のデータベース接続メソッド(下記にあります。)
|
21
|
+
|
22
|
+
$id = $log->getId();
|
23
|
+
$pass = $log->getPass();
|
24
|
+
$sql = "select * from muser where user_id = '".$id."' AND user_pass = '".$pass."'"; ---setterで値を受け取りsql文作成
|
25
|
+
$result = $db1->query($sql);---結果をオブジェクトでもらい
|
26
|
+
$arr = $result->fetch(PDO::FETCH_ASSOC); ---配列に変換?
|
27
|
+
|
28
|
+
if($arr["USER_ID"] === $id AND $arr["USER_PASS"] === $pass){
|
29
|
+
header("Location:main.php");
|
30
|
+
exit();
|
31
|
+
}else{
|
32
|
+
header("Location:loginForm.php");
|
33
|
+
exit();
|
34
|
+
}
|
35
|
+
```
|
36
|
+
```ここに言語を入力
|
7
|
-
|
37
|
+
function access()
|
8
38
|
{
|
9
39
|
$pdo = new PDO('mysql:host=localhost;dbname=locshop;charset=utf8', 'root', '', [
|
10
40
|
PDO::ERRMODE_EXCEPTION
|
@@ -23,32 +53,10 @@
|
|
23
53
|
}
|
24
54
|
```
|
25
55
|
|
26
|
-
これを実行すると、データベース接続成功と表示されます。
|
27
56
|
|
28
57
|
|
58
|
+
原因はlogin.phpとdb.phpで二度インスタンス生成しているため、db.phpで値を受け取ろうとしてもうまく受け取れず、SQL文がおかしくなりqueryの結果がbooleanになるのだとわかりました。(受け取った値はNULLになっていました。)
|
29
59
|
|
30
|
-
|
60
|
+
if文ですが、var_dumpしてみたらなぜだめなのかすぐにわかりました。
|
31
|
-
```ここに言語を入力
|
32
|
-
<?php
|
33
|
-
require 'db.php';
|
34
|
-
require "logfor.php";
|
35
61
|
|
36
|
-
$db1 = new db();
|
37
|
-
$db = $db1::access(); ーーーデータベース接続
|
38
|
-
|
39
|
-
$login = new login();
|
40
|
-
$us = "Gib";
|
41
|
-
$login->setId($us);
|
42
|
-
$id = $login->getId();
|
43
|
-
|
44
|
-
$sql = "select * from muser where user_id = '".$id."'";
|
45
|
-
|
46
|
-
|
62
|
+
力を貸してくれた皆様に感謝しています。ありがとうございました。
|
47
|
-
$arr = $result->fetch(PDO::FETCH_ASSOC);
|
48
|
-
foreach($arr as $out){
|
49
|
-
echo $out;
|
50
|
-
}
|
51
|
-
?>
|
52
|
-
```
|
53
|
-
|
54
|
-
なぜなのかわかりませんが、メソッドを呼び出すと実行できないのかなと考えている状況です。
|