回答編集履歴
4
変数のオブジェクト宣言を追加
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
function db_connect(){
|
14
14
|
|
15
|
-
$obj = [];
|
15
|
+
$obj = []; //変数のオブジェクト宣言
|
16
16
|
|
17
17
|
try{
|
18
18
|
|
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
$pdo->setAttribute(PDO::ATTR_PERSISTENT, true);
|
34
34
|
|
35
|
-
$obj
|
35
|
+
$obj = $pdo;
|
36
36
|
|
37
37
|
}catch(PDOException $Exception){
|
38
38
|
|
@@ -92,4 +92,4 @@
|
|
92
92
|
|
93
93
|
|
94
94
|
|
95
|
-
最後に、肝心のログイン画面ですが、main.phpと同じように作ればいいです。$pdo内にはdbオブジェクトか、エラーメッセージのjsonオブジェクトのいずれかが入っている状態なので、
|
95
|
+
最後に、肝心のログイン画面ですが、main.phpと同じように作ればいいです。$pdo内にはdbオブジェクトか、エラーメッセージのjsonオブジェクトのいずれかが入っている状態なので、プログラムから判別してください。
|
3
オブジェクトにして変数を返す
test
CHANGED
@@ -12,7 +12,9 @@
|
|
12
12
|
|
13
13
|
function db_connect(){
|
14
14
|
|
15
|
+
$obj = [];
|
16
|
+
|
15
|
-
try{
|
17
|
+
try{
|
16
18
|
|
17
19
|
$pdo = new PDO(
|
18
20
|
|
@@ -30,7 +32,7 @@
|
|
30
32
|
|
31
33
|
$pdo->setAttribute(PDO::ATTR_PERSISTENT, true);
|
32
34
|
|
33
|
-
$
|
35
|
+
$object = $pdo;
|
34
36
|
|
35
37
|
}catch(PDOException $Exception){
|
36
38
|
|
@@ -38,13 +40,13 @@
|
|
38
40
|
|
39
41
|
$login_name = '';
|
40
42
|
|
41
|
-
|
43
|
+
$obj = json_encode($connect_err , JSON_HEX_TAG | JSON_HEX_AMP |
|
42
44
|
|
43
|
-
|
45
|
+
JSON_HEX_APOS | JSON_HEX_QUOT);
|
44
46
|
|
45
|
-
}
|
47
|
+
}
|
46
48
|
|
47
|
-
return $
|
49
|
+
return $obj;
|
48
50
|
|
49
51
|
}
|
50
52
|
|
@@ -74,6 +76,8 @@
|
|
74
76
|
|
75
77
|
$pdo = db_connect(); //外部ファイルからdbオブジェクト構築の関数を読み込む
|
76
78
|
|
79
|
+
|
80
|
+
|
77
81
|
/*データベース処理*/
|
78
82
|
|
79
83
|
?>
|
@@ -88,4 +92,4 @@
|
|
88
92
|
|
89
93
|
|
90
94
|
|
91
|
-
最後に、肝心のログイン画面ですが、main.phpと同じように作ればいいです。
|
95
|
+
最後に、肝心のログイン画面ですが、main.phpと同じように作ればいいです。$pdo内にはdbオブジェクトか、エラーメッセージのjsonオブジェクトのいずれかが入っている状態なので、表のプログラムから判別してください。
|
2
外部ファイルの中身
test
CHANGED
@@ -1,4 +1,58 @@
|
|
1
1
|
dbに問い合わせる部分を外部ファイルにして 最後にdbオブジェクトが入った変数 $pdoを返すようにしたらいいと思います。それから、この外部ファイル名をfunc_db_connect.phpとでも名付けてみます。
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
func_db_connect.php
|
6
|
+
|
7
|
+
```PHP
|
8
|
+
|
9
|
+
<?php
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
function db_connect(){
|
14
|
+
|
15
|
+
try{
|
16
|
+
|
17
|
+
$pdo = new PDO(
|
18
|
+
|
19
|
+
'mysql:host=localhost;dbname=testdb;charset=utf8',
|
20
|
+
|
21
|
+
$login_name,
|
22
|
+
|
23
|
+
$login_pass
|
24
|
+
|
25
|
+
);
|
26
|
+
|
27
|
+
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
28
|
+
|
29
|
+
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
|
30
|
+
|
31
|
+
$pdo->setAttribute(PDO::ATTR_PERSISTENT, true);
|
32
|
+
|
33
|
+
$connect_err = "false";
|
34
|
+
|
35
|
+
}catch(PDOException $Exception){
|
36
|
+
|
37
|
+
$login_pass = '';
|
38
|
+
|
39
|
+
$login_name = '';
|
40
|
+
|
41
|
+
$connect_err = "true";
|
42
|
+
|
43
|
+
exit;
|
44
|
+
|
45
|
+
}
|
46
|
+
|
47
|
+
return $pdo;
|
48
|
+
|
49
|
+
}
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
```
|
54
|
+
|
55
|
+
|
2
56
|
|
3
57
|
|
4
58
|
|
@@ -10,11 +64,15 @@
|
|
10
64
|
|
11
65
|
|
12
66
|
|
67
|
+
main.php
|
68
|
+
|
13
69
|
```PHP
|
14
70
|
|
15
71
|
<?php
|
16
72
|
|
17
73
|
require_once($_SERVER['DOCUMENT_ROOT']."/func_db_connect.php");
|
74
|
+
|
75
|
+
$pdo = db_connect(); //外部ファイルからdbオブジェクト構築の関数を読み込む
|
18
76
|
|
19
77
|
/*データベース処理*/
|
20
78
|
|
@@ -27,3 +85,7 @@
|
|
27
85
|
</html>
|
28
86
|
|
29
87
|
```
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
最後に、肝心のログイン画面ですが、main.phpと同じように作ればいいです。
|
1
Sessionは切れるおそれがある
test
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
dbに
|
1
|
+
dbに問い合わせる部分を外部ファイルにして 最後にdbオブジェクトが入った変数 $pdoを返すようにしたらいいと思います。それから、この外部ファイル名をfunc_db_connect.phpとでも名付けてみます。
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
そして、`require_once()`という関数があるので、これをmain.php読み込み直後に記述して、逐一読み込んだ方がいいです
|
5
|
+
そして、`require_once()`という関数があるので、これをmain.php読み込み直後に記述して、逐一読み込んだ方がいいです。Sessionを使ってオブジェクトを受け渡しても切れる恐れがありますので。
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
それから、PHPについてですが、なるべくhtml内でプログラムの演算処理は行わない方がいいですよ。パフォーマンスが低下するので、出力させるだけにしてください。
|
9
|
+
それから、PHPについてですが、なるべくhtml内でプログラムの演算処理は行わない方がいいですよ。パフォーマンスが低下するので、変数を出力させるだけにしてください。
|
10
10
|
|
11
11
|
|
12
12
|
|