回答編集履歴

3

修正

2019/08/05 08:53

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -68,7 +68,7 @@
68
68
 
69
69
 
70
70
 
71
- 現在の作りだとoperatorはHTMLをブラ憂さの開発ツールで改ざんされない限りは必ず投入されて1,2,3,4のいずれかが必ず渡ってきます。
71
+ 現在の作りだとoperatorはHTMLをブラウザの開発ツールで改ざんされない限りは必ず投入されて1,2,3,4のいずれかが必ず渡ってきます。
72
72
 
73
73
 
74
74
 

2

修正

2019/08/05 08:53

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -85,3 +85,17 @@
85
85
 
86
86
 
87
87
  自身にフォーム送信するのであればactionの指定は不要だったりします。
88
+
89
+
90
+
91
+ # 蛇足2
92
+
93
+
94
+
95
+ 過去質問検索してみましょう。
96
+
97
+ - [[四則演算 tag:PHP sort:created-desc] の検索結果: 14件](https://teratail.com/search?q=%E5%9B%9B%E5%89%87%E6%BC%94%E7%AE%97+tag%3APHP+sort%3Acreated-desc)
98
+
99
+ - [[入力チェック tag:PHP sort:created-desc] の検索結果: 939件](https://teratail.com/search?q=%E5%85%A5%E5%8A%9B%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF+tag%3APHP+sort%3Acreated-desc)
100
+
101
+ - [[数字 入力チェック tag:PHP sort:created-desc] の検索結果: 80件](https://teratail.com/search?q=%E6%95%B0%E5%AD%97+%E5%85%A5%E5%8A%9B%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF+tag%3APHP+sort%3Acreated-desc)

1

細々と気になるところ

2019/08/05 08:49

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -15,3 +15,73 @@
15
15
  - [is_numeric()](https://www.php.net/manual/ja/function.is-numeric.php)
16
16
 
17
17
  - [preg_match()](https://www.php.net/manual/ja/function.preg-match.php)で[正規表現](https://qiita.com/BlueSilverCat/items/f35f9b03169d0f70818b)によるチェック
18
+
19
+
20
+
21
+ # 細々と気になるところ
22
+
23
+
24
+
25
+ コメントアウトされている状況から「何かしらやろうとしている」のは分かりますが、
26
+
27
+ PHPマニュアルをきちんと確認されたほうが良いと思います。
28
+
29
+
30
+
31
+ > if(isset($_POST["n1"] && $_POST["n2"])){
32
+
33
+
34
+
35
+ [isset()](https://www.php.net/manual/ja/function.isset.php)は変数が定義されているかどうかチェックする関数ではありますが、上記の書き方だと`$_POST["n1"] && $_POST["n2"]の結果が定義されているか`になりますし、そもそもisset()内に式は書けないので、エラーになります。
36
+
37
+ ```php
38
+
39
+ var_dump(isset($a && $b));
40
+
41
+ //PHP Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
42
+
43
+ ```
44
+
45
+ 変数を1つ1つ与えましょう。
46
+
47
+ ```php
48
+
49
+ var_dump(isset($a) && isset($b));
50
+
51
+ ```
52
+
53
+
54
+
55
+ > if(preg_match($_POST["n1"] && $_POST["n2"])){
56
+
57
+
58
+
59
+ [preg_match()](https://www.php.net/manual/ja/function.preg-match.php)の第一引数は`pattern`です。要は「どういう条件で検索を行うか」ですね。
60
+
61
+ n1もn2も単に入力するだけの要素ですので、こちらも式を入れてはいけません。
62
+
63
+
64
+
65
+ > if (isset($_POST["operator"])) {
66
+
67
+ switch ($_POST["operator"]) {
68
+
69
+
70
+
71
+ 現在の作りだとoperatorはHTMLをブラ憂さの開発ツールで改ざんされない限りは必ず投入されて1,2,3,4のいずれかが必ず渡ってきます。
72
+
73
+
74
+
75
+ ということは「入力チェックの結果、NGであればこの処理を通さない」という対応が必要になります。
76
+
77
+
78
+
79
+ # 蛇足
80
+
81
+
82
+
83
+ > <form action="index2.php" method="POST">
84
+
85
+
86
+
87
+ 自身にフォーム送信するのであればactionの指定は不要だったりします。