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

回答編集履歴

1

追記

2016/09/16 01:34

投稿

yambejp
yambejp

スコア117912

answer CHANGED
@@ -11,4 +11,50 @@
11
11
  あとはnullはどうするとか、未定義はどうするとか、
12
12
  文字列やマイナスや小数点だったらどうするとかバリデートを検討してください。
13
13
  またUIの方で直接入力をやめさせセレクトボックスで年齢をいれたり
14
- 生年月日をいれさせて年齢を計算するなどで対応するのが妥当です
14
+ 生年月日をいれさせて年齢を計算するなどで対応するのが妥当です
15
+
16
+ # 追記
17
+ 一応、バリデートの方法も提示しておきます。
18
+ ユーザーから送られてくる$_GET["age"]について以下条件
19
+ - 0から200までの整数とする
20
+ - それ以外の値はdefaultのnullとする
21
+
22
+ ```PHP
23
+ <?PHP
24
+ $age=filter_input(INPUT_GET,'age',FILTER_VALIDATE_INT,["options"=>["min_range"=>0,"max_range"=>200,"default"=>null]]);
25
+ print "戻り値:";
26
+ var_dump($age);
27
+ ?>
28
+ <hr>
29
+ <form method="get">
30
+ 小数点:<input type="text" name="age" value="10.1">
31
+ <input type="submit" value="go">
32
+ </form>
33
+ <form method="get">
34
+ マイナス:<input type="text" name="age" value="-1">
35
+ <input type="submit" value="go">
36
+ </form>
37
+ <form method="get">
38
+ 空文字:<input type="text" name="age" value="">
39
+ <input type="submit" value="go">
40
+ </form>
41
+ <form method="get">
42
+ 文字列:<input type="text" name="age" value="abc">
43
+ <input type="submit" value="go">
44
+ </form>
45
+ <form method="get">
46
+ OKな数字:<input type="text" name="age" value="20">
47
+ <input type="submit" value="go">
48
+ </form>
49
+ <form method="get">
50
+ 0:<input type="text" name="age" value="0">
51
+ <input type="submit" value="go">
52
+ </form>
53
+ <form method="get">
54
+ 上限over:<input type="text" name="age" value="300">
55
+ <input type="submit" value="go">
56
+ </form>
57
+
58
+ ```
59
+
60
+ こうすれば、is_null($age)のみでチェックできます