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

回答編集履歴

3

edit

2021/01/19 22:53

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -38,9 +38,15 @@
38
38
  返り値
39
39
  var が存在し、かつ**その値が空や0でなければ**、 つまり boolean のコンテキストで false と見なされる場合、false を返します。
40
40
 
41
- つまり`empty($_POST['gender'])`は「男」を選択した「0」のときは必ずempty()であると判定されます。
41
+ つまり`empty($_POST['gender'])`は「男」を選択した「0」のときは必ずempty()はtrueが返っています。
42
42
  emptyを使う際の注意点です。
43
43
  0を「空である」と判定します。
44
+ ```php
45
+ var_dump(empty(0)); //true
46
+ var_dump(empty('0')); //true
47
+ var_dump(empty(1)); //false
48
+ var_dump(empty('1')); //fals
49
+ ```
44
50
 
45
51
  ユーザーからの入力は何が来るか分からない…と言う点でempty()でチェックするのは悪手だと考えられます。
46
52
  ブラウザのデベロッパーツールから書き換えればhiddenからだって0を送れます。prefectureのほうも改ざん可能です。

2

edit

2021/01/19 22:52

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -38,9 +38,9 @@
38
38
  返り値
39
39
  var が存在し、かつ**その値が空や0でなければ**、 つまり boolean のコンテキストで false と見なされる場合、false を返します。
40
40
 
41
- つまり`empty($_POST['gender'])`は「男」を選択した「0」のときは必ずfalseが返ります。
41
+ つまり`empty($_POST['gender'])`は「男」を選択した「0」のときは必ずempty()であると判定されます。
42
42
  emptyを使う際の注意点です。
43
- 0をfalseと判定します。
43
+ 0を「空である」と判定します。
44
44
 
45
45
  ユーザーからの入力は何が来るか分からない…と言う点でempty()でチェックするのは悪手だと考えられます。
46
46
  ブラウザのデベロッパーツールから書き換えればhiddenからだって0を送れます。prefectureのほうも改ざん可能です。

1

edit

2021/01/19 22:51

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -42,7 +42,9 @@
42
42
  emptyを使う際の注意点です。
43
43
  0をfalseと判定します。
44
44
 
45
- ユーザーからの入力は何が来るか分からない…と言う点でempty()でチェックするのは悪手だと考えられます。「keyが存在したら」とう観点ならisset()でも良いのですけど、
45
+ ユーザーからの入力は何が来るか分からない…と言う点でempty()でチェックするのは悪手だと考えられます。
46
+ ブラウザのデベロッパーツールから書き換えればhiddenからだって0を送れます。prefectureのほうも改ざん可能です。
47
+ 「keyが存在したら」とう観点ならisset()でも良いのですけど、
46
48
  prefectureの方もですが、[filter_input()](https://www.php.net/manual/ja/function.filter-input.php)の利用を強くすすめます。
47
49
 
48
50
  ```php
@@ -67,8 +69,17 @@
67
69
  }
68
70
  ```
69
71
 
72
+ 蛇足1:
73
+ 流れは入力→確認画面→完了でしょうか。
74
+ hiddenに保持した場合、先に書いたようにブラウザのデベロッパーツールから値や内容を改ざんできるので、
75
+ セッションに保持したほうが良いです。
76
+ なんでもかんでも送れてはいけないので、バリデーションも入れましょう。
70
77
 
71
- 蛇足:
78
+ 蛇足
79
+ XSSが可能な作りになっています。
80
+ 「そもそもXSSとは」というところを調べたうえで適切に対応してください。
81
+
82
+ 蛇足3:
72
83
  性別の選択って結構センシティブなものなので、
73
84
  学習中かもしれませんが、今後のことも加味してある程度気にされたほうが良いです。
74
85
  [ダイバーシティ時代に「性別を選択する」ということ](https://about.yahoo.co.jp/info/blog/20180613/diversity.html)