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

回答編集履歴

3

修正

2017/06/20 11:45

投稿

yambejp
yambejp

スコア117871

answer CHANGED
@@ -1,4 +1,3 @@
1
- mysqlをご利用ならPDOでプレースホルダとしてprepareで処理します
1
+ mysqlをご利用なプレースホルダとしてprepareで処理します
2
2
  どうしても気になるなら受け取ったパスをサニタイズする手もありますが
3
3
  処理的にはあまり意味がありません。
4
- なおprepareのエミュレーションはしないほうがいいとされています。

2

ソース削除

2017/06/20 11:45

投稿

yambejp
yambejp

スコア117871

answer CHANGED
@@ -2,25 +2,3 @@
2
2
  どうしても気になるなら受け取ったパスをサニタイズする手もありますが
3
3
  処理的にはあまり意味がありません。
4
4
  なおprepareのエミュレーションはしないほうがいいとされています。
5
-
6
- ```PHP
7
- $userStr=filter_input(INPUT_POST,'user');
8
- $passStr=filter_input(INPUT_POST,'pass');
9
-
10
- try{
11
- $dsn = 'mysql:host=localhost; dbname=test;charset=utf8;';
12
- $pdo = new PDO($dsn, $user,$password);
13
- $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
14
- $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
15
- $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
16
- $sql="SELECT * FROM tbl WHERE user=? AND password=? LIMIT 1";
17
- $stmt = $pdo->prepare($sql);
18
- $stmt->execute([$userStr,$passStr]);
19
- $row=$stmt->fetch();
20
- print_r($row);
21
- }catch(PDOException $e){
22
- die($e->getMessage());
23
- }
24
-
25
- ```
26
- mysqliにもprepare処理がありますが、やや煩雑なソースになります

1

調整

2017/06/20 11:45

投稿

yambejp
yambejp

スコア117871

answer CHANGED
@@ -4,7 +4,8 @@
4
4
  なおprepareのエミュレーションはしないほうがいいとされています。
5
5
 
6
6
  ```PHP
7
+ $userStr=filter_input(INPUT_POST,'user');
7
- $pass=filter_input(INPUT_POST,'pass');
8
+ $passStr=filter_input(INPUT_POST,'pass');
8
9
 
9
10
  try{
10
11
  $dsn = 'mysql:host=localhost; dbname=test;charset=utf8;';
@@ -12,9 +13,9 @@
12
13
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
13
14
  $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
14
15
  $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
15
- $sql="SELECT * FROM tbl password=? limit 1";
16
+ $sql="SELECT * FROM tbl WHERE user=? AND password=? LIMIT 1";
16
17
  $stmt = $pdo->prepare($sql);
17
- $stmt->execute([$pass]);
18
+ $stmt->execute([$userStr,$passStr]);
18
19
  $row=$stmt->fetch();
19
20
  print_r($row);
20
21
  }catch(PDOException $e){