teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

解決しました。

2018/07/13 02:06

投稿

rockstar
rockstar

スコア9

answer CHANGED
@@ -1,10 +1,40 @@
1
- 昨日のデータベース接続部分を添付しましたので、確認お願いす。
1
+ 無事ログイン認証できました。下記は成功たコードです。
2
+ ```ここに言語を入力
2
- login.php
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
- function access()
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
- $result = $db->query($sql);
62
+ 力を貸してくれた皆様に感謝しています。ありがとうございました。
47
- $arr = $result->fetch(PDO::FETCH_ASSOC);
48
-   foreach($arr as $out){
49
- echo $out;
50
- }
51
- ?>
52
- ```
53
-
54
- なぜなのかわかりませんが、メソッドを呼び出すと実行できないのかなと考えている状況です。