質問編集履歴
1
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -155,3 +155,121 @@
|
|
155
155
|
}
|
156
156
|
|
157
157
|
```
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
また、「ページ遷移が不正です」が表示される原因となる、mailform_tokenについて記載がある箇所が下記になります。
|
162
|
+
|
163
|
+
#### 各雇用形態のフォームページにCSRF対策として、下記のコードを記載しております。
|
164
|
+
|
165
|
+
```php
|
166
|
+
|
167
|
+
<?php
|
168
|
+
|
169
|
+
//CSRF対策用
|
170
|
+
|
171
|
+
session_name('PHPMAILFORMSYSTEM');
|
172
|
+
|
173
|
+
session_start();
|
174
|
+
|
175
|
+
$token = sha1(uniqid(mt_rand(), true));
|
176
|
+
|
177
|
+
$_SESSION['mailform_token'] = $token;
|
178
|
+
|
179
|
+
$html = '<input type="hidden" name="mailform_token" value="'.$token.'" />';
|
180
|
+
|
181
|
+
?>
|
182
|
+
|
183
|
+
```
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
#### mail.phpの方にトークンをセットするために下記のコードを記載しております。
|
188
|
+
|
189
|
+
``` php
|
190
|
+
|
191
|
+
//確認画面の入力内容出力用関数
|
192
|
+
|
193
|
+
function confirmOutput($arr){
|
194
|
+
|
195
|
+
global $hankaku,$hankaku_array,$useToken,$confirmDsp,$replaceStr;
|
196
|
+
|
197
|
+
$html = '';
|
198
|
+
|
199
|
+
foreach($arr as $key => $val) {
|
200
|
+
|
201
|
+
$out = '';
|
202
|
+
|
203
|
+
if(is_array($val)){
|
204
|
+
|
205
|
+
foreach($val as $key02 => $item){
|
206
|
+
|
207
|
+
//連結項目の処理
|
208
|
+
|
209
|
+
if(is_array($item)){
|
210
|
+
|
211
|
+
$out .= connect2val($item);
|
212
|
+
|
213
|
+
}else{
|
214
|
+
|
215
|
+
$out .= $item . ', ';
|
216
|
+
|
217
|
+
}
|
218
|
+
|
219
|
+
}
|
220
|
+
|
221
|
+
$out = rtrim($out,', ');
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
}else{ $out = $val; }//チェックボックス(配列)追記ここまで
|
226
|
+
|
227
|
+
if(get_magic_quotes_gpc()) { $out = stripslashes($out); }
|
228
|
+
|
229
|
+
$out = nl2br(h($out));//※追記 改行コードを<br>タグに変換
|
230
|
+
|
231
|
+
$key = h($key);
|
232
|
+
|
233
|
+
$out = str_replace($replaceStr['before'], $replaceStr['after'], $out);//機種依存文字の置換処理
|
234
|
+
|
235
|
+
|
236
|
+
|
237
|
+
//全角→半角変換
|
238
|
+
|
239
|
+
if($hankaku == 1){
|
240
|
+
|
241
|
+
$out = zenkaku2hankaku($key,$out,$hankaku_array);
|
242
|
+
|
243
|
+
}
|
244
|
+
|
245
|
+
if($key != 'type'){
|
246
|
+
|
247
|
+
$html .= "<tr><th>".$key."</th><td>".$out;
|
248
|
+
|
249
|
+
$html .= '<input type="hidden" name="'.$key.'" value="'.str_replace(array("<br />","<br>"),"",$out).'" />';
|
250
|
+
|
251
|
+
$html .= "</td></tr>\n";
|
252
|
+
|
253
|
+
}
|
254
|
+
|
255
|
+
}
|
256
|
+
|
257
|
+
//トークンをセット
|
258
|
+
|
259
|
+
if($useToken == 1 && $confirmDsp == 1){
|
260
|
+
|
261
|
+
$token = sha1(uniqid(mt_rand(), true));
|
262
|
+
|
263
|
+
$_SESSION['mailform_token'] = $token;
|
264
|
+
|
265
|
+
$html .= '<input type="hidden" name="mailform_token" value="'.$token.'" />';
|
266
|
+
|
267
|
+
}
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
return $html;
|
272
|
+
|
273
|
+
}
|
274
|
+
|
275
|
+
```
|