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