回答編集履歴

2

コード追加

2018/02/05 10:04

投稿

m.ts10806
m.ts10806

スコア80861

test CHANGED
@@ -85,3 +85,101 @@
85
85
 
86
86
 
87
87
  ```
88
+
89
+
90
+
91
+ # コメントを受けての追記
92
+
93
+
94
+
95
+ 下記のような構成にするとして下記のような感じ。
96
+
97
+ ※理論だけで未検証のコードなのでエラーなど出た場合は適宜調整いただければと。
98
+
99
+
100
+
101
+ /{root}/index.html
102
+
103
+ /{root}/calc.php
104
+
105
+ /{root}/calc1/index.php
106
+
107
+ /{root}/calc2/index.php
108
+
109
+ /dispatcher.php
110
+
111
+
112
+
113
+ dispatcher.php をrootと同じ階層にしたのは、
114
+
115
+ 機能的にWEBからアクセスさせないためです。
116
+
117
+ {root}以上の階層であればどこでも構いません(それこそフレームワークの考え方ですね;)
118
+
119
+
120
+
121
+ /{root}/index.html
122
+
123
+ ```html
124
+
125
+ <a href="calc.php?type=calc1&a=123&b=345">計算1へ</a>
126
+
127
+ <a href="calc.php?type=calc2&a=123&c=678">計算2へ</a>
128
+
129
+ ```
130
+
131
+ /{root}/calc.php
132
+
133
+ ```php
134
+
135
+ if($_SERVER['REQUEST_METHOD'] === 'GET'){
136
+
137
+ require_once __DIR__."/../dispatcher.php"
138
+
139
+ }
140
+
141
+ echo "エラー";
142
+
143
+ ```
144
+
145
+ calc.phpを経由するのはdispatcherの存在を隠すためです。
146
+
147
+
148
+
149
+ /dispatcher.php
150
+
151
+ ```php
152
+
153
+ //計算種類が存在するか確認
154
+
155
+ if(array_key_exists("type",$_GET) && file_exists(__DIR__."/{root}/".$_GET["type"]."/index.php")){
156
+
157
+ $qa_group = array();
158
+
159
+ //計算種類以外をクエリストリングとして再編
160
+
161
+ foreach($_GET as $key=>$value){
162
+
163
+ if($key== "type") continue;
164
+
165
+ $qa_group[] = $key."=".$value;
166
+
167
+ }
168
+
169
+ $qa = '';
170
+
171
+ if(count($qa_group) > 0){
172
+
173
+ $qa = '?'.implode("&",$qa_group);
174
+
175
+ }
176
+
177
+ //対象の計算へリダイレクト
178
+
179
+ header("Location: ".__DIR__."/{root}/{$_GET["type"]}/{$qa}");
180
+
181
+ exit;
182
+
183
+ }
184
+
185
+ ```

1

GETのkey存在確認

2018/02/05 10:04

投稿

m.ts10806
m.ts10806

スコア80861

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  //hoge.php
38
38
 
39
- if($_SERVER['REQUEST_METHOD'] == 'GET'){
39
+ if($_SERVER['REQUEST_METHOD'] === 'GET'){
40
40
 
41
41
  echo $_GET["test"];
42
42
 
@@ -68,9 +68,15 @@
68
68
 
69
69
  //hoge.php
70
70
 
71
- if($_SERVER['REQUEST_METHOD'] == 'GET'){
71
+ if($_SERVER['REQUEST_METHOD'] === 'GET'){
72
72
 
73
+ $test = '';
74
+
75
+ if(array_key_exists("test",$_GET)){
76
+
73
- $test = htmlspecialchars($_GET["test"],ENT_QUOTES,'UTF-8');
77
+ $test = htmlspecialchars($_GET["test"],ENT_QUOTES,'UTF-8');
78
+
79
+ }
74
80
 
75
81
  echo $test.'<input type="text" name="test" value="'.$test.'">';
76
82