回答編集履歴

3

edit

2021/01/19 22:53

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -78,11 +78,23 @@
78
78
 
79
79
 
80
80
 
81
- つまり`empty($_POST['gender'])`は「男」を選択した「0」のときは必ずempty()であると判定されます。
81
+ つまり`empty($_POST['gender'])`は「男」を選択した「0」のときは必ずempty()はtrueが返っています。
82
82
 
83
83
  emptyを使う際の注意点です。
84
84
 
85
85
  0を「空である」と判定します。
86
+
87
+ ```php
88
+
89
+ var_dump(empty(0)); //true
90
+
91
+ var_dump(empty('0')); //true
92
+
93
+ var_dump(empty(1)); //false
94
+
95
+ var_dump(empty('1')); //fals
96
+
97
+ ```
86
98
 
87
99
 
88
100
 

2

edit

2021/01/19 22:52

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -78,11 +78,11 @@
78
78
 
79
79
 
80
80
 
81
- つまり`empty($_POST['gender'])`は「男」を選択した「0」のときは必ずfalseが返ります。
81
+ つまり`empty($_POST['gender'])`は「男」を選択した「0」のときは必ずempty()であると判定されます。
82
82
 
83
83
  emptyを使う際の注意点です。
84
84
 
85
- 0をfalseと判定します。
85
+ 0を「空である」と判定します。
86
86
 
87
87
 
88
88
 

1

edit

2021/01/19 22:51

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -86,7 +86,11 @@
86
86
 
87
87
 
88
88
 
89
- ユーザーからの入力は何が来るか分からない…と言う点でempty()でチェックするのは悪手だと考えられます。「keyが存在したら」とう観点ならisset()でも良いのですけど、
89
+ ユーザーからの入力は何が来るか分からない…と言う点でempty()でチェックするのは悪手だと考えられます。
90
+
91
+ ブラウザのデベロッパーツールから書き換えればhiddenからだって0を送れます。prefectureのほうも改ざん可能です。
92
+
93
+ 「keyが存在したら」とう観点ならisset()でも良いのですけど、
90
94
 
91
95
  prefectureの方もですが、[filter_input()](https://www.php.net/manual/ja/function.filter-input.php)の利用を強くすすめます。
92
96
 
@@ -136,9 +140,27 @@
136
140
 
137
141
 
138
142
 
143
+ 蛇足1:
144
+
145
+ 流れは入力→確認画面→完了でしょうか。
146
+
147
+ hiddenに保持した場合、先に書いたようにブラウザのデベロッパーツールから値や内容を改ざんできるので、
148
+
149
+ セッションに保持したほうが良いです。
150
+
151
+ なんでもかんでも送れてはいけないので、バリデーションも入れましょう。
139
152
 
140
153
 
154
+
141
- 蛇足:
155
+ 蛇足
156
+
157
+ XSSが可能な作りになっています。
158
+
159
+ 「そもそもXSSとは」というところを調べたうえで適切に対応してください。
160
+
161
+
162
+
163
+ 蛇足3:
142
164
 
143
165
  性別の選択って結構センシティブなものなので、
144
166