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

回答編集履歴

4

変数のオブジェクト宣言を追加

2018/11/02 02:37

投稿

FKM
FKM

スコア3662

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
- $object = $pdo;
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

オブジェクトにして変数を返す

2018/11/02 02:37

投稿

FKM
FKM

スコア3662

answer CHANGED
@@ -5,7 +5,8 @@
5
5
  <?php
6
6
 
7
7
  function db_connect(){
8
+ $obj = [];
8
- try{
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
- $connect_err = "false";
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
- $connect_err = "true";
23
+ JSON_HEX_APOS | JSON_HEX_QUOT);
22
- exit;
23
- }
24
+ }
24
- return $pdo;
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

外部ファイルの中身

2018/11/02 02:14

投稿

FKM
FKM

スコア3662

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は切れるおそれがある

2018/11/02 02:06

投稿

FKM
FKM

スコア3662

answer CHANGED
@@ -1,8 +1,8 @@
1
- dbにログインする部分を外部ファイルにして 最後にdbオブジェクトが入った変数 $pdoを返すようにしたらいいと思います。それから、この外部ファイル名をfunc_db_connect.phpとでも名付けてみます。
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