回答編集履歴
1
加筆修正
answer
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
<meta charset="UTF-8" />
|
5
5
|
</head>
|
6
6
|
<body>
|
7
|
-
<form method="
|
7
|
+
<form method="POST">
|
8
8
|
<p>質問1 <br />
|
9
9
|
<input type="radio" name="Q1" value="1000" />①yes<br />
|
10
10
|
<input type="radio" name="Q1" value="2000" />②no<br />
|
@@ -48,10 +48,18 @@
|
|
48
48
|
|
49
49
|
if (is_numeric($value1) && is_numeric($value2)) {
|
50
50
|
$qtq = intval($value1) + intval($value2);
|
51
|
+
echo h($qtq);
|
52
|
+
} else {
|
53
|
+
echo '...';
|
51
54
|
}
|
52
|
-
echo h($qtq);
|
53
55
|
```
|
54
56
|
$_POST[~]で受信したものはすべて**文字列**として扱われます。
|
55
57
|
文字列と文字列を「+」演算子にて処理する際、
|
56
58
|
数値でないものを処理すると、示されたようなエラーメッセージが表示されます。
|
57
|
-
そのため、intval()で加工したり、あるいは`(int)$value1`などと型キャストを明示します。
|
59
|
+
そのため、intval()で加工したり、あるいは`(int)$value1`などと型キャストを明示します。
|
60
|
+
|
61
|
+
それと、今は想像がつかないかもしれないけど、$_POST[~]で受信したデータは、
|
62
|
+
細工すればHTMLフォームに書いていないデータを送り込むことも容易にできるため、
|
63
|
+
悪意を持ってhtmlやjavascriptを含むものを送り込まれたら、
|
64
|
+
そのままwebブラウザに出力してしまう`echo $_POST['Q1']`というのはやってはいけないです。
|
65
|
+
それを回避するために、htmlspecialchars()があります。
|