回答編集履歴
3
見直し
answer
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
|
5
5
|
where句を構成するのに多少冗長になっても、
|
6
6
|
(そのままSQL文に織り込まない)数字や文字列など単純なデータにするべきです。
|
7
|
+
そして、受信した`$_POST`や`$_GET`に望まない不正なデータが含まれていないか検証する必要もあります。
|
8
|
+
(その検証をラクにする一つの手段として、`filter_input()`などがあります。)
|
7
9
|
|
8
10
|
URLに織り込むパラメータについては、
|
9
11
|
まず`?`より後ろの文字列を、`&`を区切り文字として分解し、
|
@@ -13,7 +15,9 @@
|
|
13
15
|
`&`や`=`や`?`などurlに直接書いちゃいけない文字を置き換えてくれます。
|
14
16
|
|
15
17
|
それと、`$_POST['~']`とか`$_REQUEST['~']`とか
|
16
|
-
参照するデータが存在しない場合はちょっとしたエラーメッセージが
|
18
|
+
参照するデータが存在しない場合はちょっとしたエラーメッセージが
|
19
|
+
Notice: Undefined index: なんとか in 行番号
|
20
|
+
などとログに残るので、
|
17
21
|
`filter_input()`や`filter_input_array()`にしなさいって言われるぞ。
|
18
22
|
|
19
23
|
さらに、
|
2
加筆修正
answer
CHANGED
@@ -14,4 +14,9 @@
|
|
14
14
|
|
15
15
|
それと、`$_POST['~']`とか`$_REQUEST['~']`とか
|
16
16
|
参照するデータが存在しない場合はちょっとしたエラーメッセージがログに残るので、
|
17
|
-
`filter_input()`や`filter_input_array()`にしなさいって言われるぞ。
|
17
|
+
`filter_input()`や`filter_input_array()`にしなさいって言われるぞ。
|
18
|
+
|
19
|
+
さらに、
|
20
|
+
いちいち`if (strlen($where) > 0) {`をつけると無駄にソースコードが長くなるので、
|
21
|
+
私は配列に`$where_terms[] = 'a = 1';`みたいなのを積み上げておいて、
|
22
|
+
最後に`$where = 'WHERE ' . implode(' AND ', $where_terms);`みたいなことをするよ。
|
1
加筆修正
answer
CHANGED
@@ -10,4 +10,8 @@
|
|
10
10
|
区切ったあとの文字列ごとに最初に出現する`=`でパラメータ名とデータを分離しているはず。
|
11
11
|
where句に使っている、「なんとかイコールなんとかの」のイコールも分離用に使われてしまうので、
|
12
12
|
せめて`urlencode()`でエンコードしますよ普通は。
|
13
|
-
`&`や`=`や`?`などurlに直接書いちゃいけない文字を置き換えてくれます。
|
13
|
+
`&`や`=`や`?`などurlに直接書いちゃいけない文字を置き換えてくれます。
|
14
|
+
|
15
|
+
それと、`$_POST['~']`とか`$_REQUEST['~']`とか
|
16
|
+
参照するデータが存在しない場合はちょっとしたエラーメッセージがログに残るので、
|
17
|
+
`filter_input()`や`filter_input_array()`にしなさいって言われるぞ。
|