質問編集履歴
1
ソースコードをリンクURLのページに記載し直しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,610 +18,10 @@
|
|
18
18
|
|
19
19
|
###ソースコード
|
20
20
|
|
21
|
-
■全文
|
21
|
+
■全文(文字制限があったためこちらに載せました)
|
22
22
|
|
23
|
-
|
23
|
+
mail.php
|
24
|
-
|
25
|
-
$site_top = "http://www.demokari/contact.html";
|
26
24
|
|
27
25
|
|
28
26
|
|
29
|
-
//
|
30
|
-
|
31
|
-
$to = "demokari@yahoo.co.jp";
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
//フォームのメールアドレス入力箇所のname属性の値(name="○○" の○○部分)
|
36
|
-
|
37
|
-
$Email = "Email";
|
38
|
-
|
39
|
-
//----- 必須設定 ここまで ----
|
40
|
-
|
41
|
-
//----- 任意設定 以下は必要に応じて設定してください ---
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
$userMail = 1;
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
// Bccで送るメールアドレス(複数指定する場合は「,」で区切ってください 例 $BccMail = "aa@aa.aa,bb@bb.bb";)
|
50
|
-
|
51
|
-
$BccMail = "bbb@yahoo.co.jp";
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
// 管理者宛に送信されるメールのタイトル(件名)
|
56
|
-
|
57
|
-
$subject = "ご注文ありがとうございます 【自動配信メール】";
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
//フォーム側の「名前」箇所のname属性の値 ※自動返信メールの「○○様」の表示で使用します。
|
62
|
-
|
63
|
-
//指定しない、または存在しない場合は、○○様と表示されないだけです。あえて無効にしてもOK
|
64
|
-
|
65
|
-
$dsp_name = 'お名前';
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
//自動返信メールの冒頭の文言 ※日本語部分のみ変更可
|
70
|
-
|
71
|
-
$subject_text = <<< TEXT
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
お問い合わせありがとうございました。
|
76
|
-
|
77
|
-
早急にご返信致しますので今しばらくお待ちください。
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
送信内容は以下になります。
|
82
|
-
|
83
|
-
TEXT;
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
// 送信確認画面の表示(する=1, しない=0)
|
88
|
-
|
89
|
-
$confirmDsp = 1;
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
// 送信完了後に自動的に指定のページ(サンクスページなど)に移動する(する=1, しない=0)
|
94
|
-
|
95
|
-
// CV率を解析したい場合などはサンクスページを別途用意し、URLをこの下の項目で指定してください。
|
96
|
-
|
97
|
-
// 0にすると、デフォルトの送信完了画面が表示されます。
|
98
|
-
|
99
|
-
$jumpPage = 1;
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
// 送信完了後に表示するページURL(上記で1を設定した場合のみ)※httpから始まるURLで指定ください。
|
104
|
-
|
105
|
-
$thanksPage = "http://www.demokari/contact.html";
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
// 必須入力項目を設定する(する=1, しない=0)
|
110
|
-
|
111
|
-
$requireCheck = 1;
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
/* 必須入力項目(入力フォームで指定したname属性の値を指定してください。(上記で1を設定した場合のみ)
|
116
|
-
|
117
|
-
値はシングルクォーテーションで囲み、複数の場合はカンマで区切ってください。フォーム側と順番を合わせると良いです。
|
118
|
-
|
119
|
-
配列の形「name="○○[]"」の場合には必ず後ろの[]を取ったものを指定して下さい。*/
|
120
|
-
|
121
|
-
$require = array('お名前','Email','電話番号','郵便番号','ご住所');
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
//---------------------------
|
126
|
-
|
127
|
-
// 自動返信メール設定(START)
|
128
|
-
|
129
|
-
//-------------------------
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
//自動返信メールに署名(フッター)を表示(する=1, しない=0)※管理者宛にも表示されます。
|
134
|
-
|
135
|
-
$mailFooterDsp = 1;
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
//上記で「1」を選択時に表示する署名(フッター)(FOOTER~FOOTER;の間に記述してください)
|
140
|
-
|
141
|
-
$mailSignature = <<< FOOTER
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
──────────────────────
|
146
|
-
|
147
|
-
株式会社demokari
|
148
|
-
|
149
|
-
──────────────────────
|
150
|
-
|
151
|
-
FOOTER;
|
152
|
-
|
153
|
-
//------ 任意設定ここまで --
|
154
|
-
|
155
|
-
//----------------------
|
156
|
-
|
157
|
-
// 関数実行、変数初期化
|
158
|
-
|
159
|
-
//-------
|
160
|
-
|
161
|
-
$encode = "SJIS";//このファイルの文字コード定義(変更不可)
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
if(isset($_GET)) $_GET = sanitize($_GET);//NULLバイト除去//
|
166
|
-
|
167
|
-
if(isset($_POST)) $_POST = sanitize($_POST);//NULLバイト除去//
|
168
|
-
|
169
|
-
if(isset($_COOKIE)) $_COOKIE = sanitize($_COOKIE);//NULLバイト除去//
|
170
|
-
|
171
|
-
if($encode == 'SJIS') $_POST = sjisReplace($_POST,$encode);//Shift-JISの場合に誤変換文字の置換実行
|
172
|
-
|
173
|
-
$funcRefererCheck = refererCheck($Referer_check,$Referer_check_domain);//リファラチェック実行
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
//変数初期化
|
178
|
-
|
179
|
-
$sendmail = 0;
|
180
|
-
|
181
|
-
$empty_flag = 0;
|
182
|
-
|
183
|
-
$post_mail = '';
|
184
|
-
|
185
|
-
$errm ='';
|
186
|
-
|
187
|
-
$header ='';
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
if($requireCheck == 1) {
|
192
|
-
|
193
|
-
$requireResArray = requireCheck($require);//必須チェック実行し返り値を受け取る
|
194
|
-
|
195
|
-
$errm = $requireResArray['errm'];
|
196
|
-
|
197
|
-
$empty_flag = $requireResArray['empty_flag'];
|
198
|
-
|
199
|
-
}
|
200
|
-
|
201
|
-
//メールアドレスチェック
|
202
|
-
|
203
|
-
if(empty($errm)){
|
204
|
-
|
205
|
-
foreach($_POST as $key=>$val) {
|
206
|
-
|
207
|
-
if($val == "confirm_submit") $sendmail = 1;
|
208
|
-
|
209
|
-
if($key == $Email) $post_mail = h($val);
|
210
|
-
|
211
|
-
if($key == $Email && $mail_check == 1 && !empty($val)){
|
212
|
-
|
213
|
-
if(!checkMail($val)){
|
214
|
-
|
215
|
-
$errm .= "<p class=\"error_messe\">【".$key."】はメールアドレスの形式が正しくありません。</p>\n";
|
216
|
-
|
217
|
-
$empty_flag = 1;
|
218
|
-
|
219
|
-
}
|
220
|
-
|
221
|
-
}
|
222
|
-
|
223
|
-
}
|
224
|
-
|
225
|
-
}
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
if(($confirmDsp == 0 || $sendmail == 1) && $empty_flag != 1){
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
//差出人に届くメールをセット
|
234
|
-
|
235
|
-
if($remail == 1) {
|
236
|
-
|
237
|
-
$userBody = mailToUser($_POST,$dsp_name,$remail_text,$mailFooterDsp,$mailSignature,$encode);
|
238
|
-
|
239
|
-
$reheader = userHeader($refrom_name,$to,$encode);
|
240
|
-
|
241
|
-
$re_subject = "=?iso-2022-jp?B?".base64_encode(mb_convert_encoding($re_subject,"JIS",$encode))."?=";
|
242
|
-
|
243
|
-
}
|
244
|
-
|
245
|
-
//管理者宛に届くメールをセット
|
246
|
-
|
247
|
-
$adminBody = mailToAdmin($_POST,$subject,$dsp_name,$remail_text,$mailFooterDsp,$mailSignature,$encode,$confirmDsp);
|
248
|
-
|
249
|
-
$header = adminHeader($userMail,$post_mail,$BccMail,$to);
|
250
|
-
|
251
|
-
$subject = "=?iso-2022-jp?B?".base64_encode(mb_convert_encoding($subject,"JIS",$encode))."?=";
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
mail($to,$subject,$adminBody,$header);
|
256
|
-
|
257
|
-
if($remail == 1) mail($post_mail,$re_subject,$userBody,$reheader);
|
258
|
-
|
259
|
-
}
|
260
|
-
|
261
|
-
else if($confirmDsp == 1){
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
if(($jumpPage == 0 && $sendmail == 1) || ($jumpPage == 0 && ($confirmDsp == 0 && $sendmail == 0))) {
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
/* ▼▼▼送信完了画面のレイアウト 編集可 ※送信完了後に指定のページに移動しない場合のみ表示▼▼▼ */
|
272
|
-
|
273
|
-
省く
|
274
|
-
|
275
|
-
/* ▲▲▲送信完了画面のレイアウト 編集可 ※送信完了後に指定のページに移動しない場合のみ表示▲▲▲ */
|
276
|
-
|
277
|
-
}
|
278
|
-
|
279
|
-
}
|
280
|
-
|
281
|
-
//確認画面無しの場合の表示、指定のページに移動する設定の場合、エラーチェックで問題が無ければ指定ページヘリダイレクト
|
282
|
-
|
283
|
-
else if(($jumpPage == 1 && $sendmail == 1) || $confirmDsp == 0) {
|
284
|
-
|
285
|
-
if($empty_flag == 1){ ?>
|
286
|
-
|
287
|
-
<div align="center"><h4>入力にエラーがあります。下記をご確認の上「戻る」ボタンにて修正をお願い致します。</h4><div style="color:red"><?php echo $errm; ?></div><br /><br /><input type="button" value=" 前画面に戻る " onClick="history.back()"></div>
|
288
|
-
|
289
|
-
<?php
|
290
|
-
|
291
|
-
}else{ header("Location: ".$thanksPage); }
|
292
|
-
|
293
|
-
}
|
294
|
-
|
295
|
-
//---------------------------------
|
296
|
-
|
297
|
-
// 関数定義(START)
|
298
|
-
|
299
|
-
//---------------------------------
|
300
|
-
|
301
|
-
function checkMail($str){
|
302
|
-
|
303
|
-
$mailaddress_array = explode('@',$str);
|
304
|
-
|
305
|
-
if(preg_match("/^[\.!#%&\-_0-9a-zA-Z\?\/\+]+\@[!#%&\-_0-9a-z]+(\.[!#%&\-_0-9a-z]+)+$/", "$str") && count($mailaddress_array) ==2){
|
306
|
-
|
307
|
-
return true;
|
308
|
-
|
309
|
-
}else{
|
310
|
-
|
311
|
-
return false;
|
312
|
-
|
313
|
-
}
|
314
|
-
|
315
|
-
}
|
316
|
-
|
317
|
-
function h($string) {
|
318
|
-
|
319
|
-
global $encode;
|
320
|
-
|
321
|
-
return htmlspecialchars($string, ENT_QUOTES,$encode);
|
322
|
-
|
323
|
-
}
|
324
|
-
|
325
|
-
function sanitize($arr){
|
326
|
-
|
327
|
-
if(is_array($arr)){
|
328
|
-
|
329
|
-
return array_map('sanitize',$arr);
|
330
|
-
|
331
|
-
}
|
332
|
-
|
333
|
-
return str_replace("\0","",$arr);
|
334
|
-
|
335
|
-
}
|
336
|
-
|
337
|
-
//Shift-JISの場合に誤変換文字の置換関数
|
338
|
-
|
339
|
-
function sjisReplace($arr,$encode){
|
340
|
-
|
341
|
-
foreach($arr as $key => $val){
|
342
|
-
|
343
|
-
$key = str_replace('\','ー',$key);
|
344
|
-
|
345
|
-
$resArray[$key] = $val;
|
346
|
-
|
347
|
-
}
|
348
|
-
|
349
|
-
return $resArray;
|
350
|
-
|
351
|
-
}
|
352
|
-
|
353
|
-
//送信メールにPOSTデータをセットする関数
|
354
|
-
|
355
|
-
function postToMail($arr){
|
356
|
-
|
357
|
-
global $hankaku,$hankaku_array;
|
358
|
-
|
359
|
-
$resArray = '';
|
360
|
-
|
361
|
-
foreach($arr as $key => $val) {
|
362
|
-
|
363
|
-
$out = '';
|
364
|
-
|
365
|
-
if(is_array($val)){
|
366
|
-
|
367
|
-
foreach($val as $key02 => $item){
|
368
|
-
|
369
|
-
//連結項目の処理
|
370
|
-
|
371
|
-
if(is_array($item)){
|
372
|
-
|
373
|
-
$out .= connect2val($item);
|
374
|
-
|
375
|
-
}else{
|
376
|
-
|
377
|
-
$out .= $item . ', ';
|
378
|
-
|
379
|
-
}
|
380
|
-
|
381
|
-
}
|
382
|
-
|
383
|
-
$out = rtrim($out,', ');
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
}else{ $out = $val; }//チェックボックス(配列)追記ここまで
|
388
|
-
|
389
|
-
if(get_magic_quotes_gpc()) { $out = stripslashes($out); }
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
//全角→半角変換
|
394
|
-
|
395
|
-
if($hankaku == 1){
|
396
|
-
|
397
|
-
$out = zenkaku2hankaku($key,$out,$hankaku_array);
|
398
|
-
|
399
|
-
}
|
400
|
-
|
401
|
-
if($out != "confirm_submit" && $key != "httpReferer" && $out != '') {
|
402
|
-
|
403
|
-
$resArray .= "【 ".h($key)." 】 ".h($out)."\n";
|
404
|
-
|
405
|
-
}
|
406
|
-
|
407
|
-
}
|
408
|
-
|
409
|
-
return $resArray;
|
410
|
-
|
411
|
-
}
|
412
|
-
|
413
|
-
//確認画面の入力内容出力用関数
|
414
|
-
|
415
|
-
function confirmOutput($arr){
|
416
|
-
|
417
|
-
global $hankaku,$hankaku_array;
|
418
|
-
|
419
|
-
$html = '';
|
420
|
-
|
421
|
-
foreach($arr as $key => $val) {
|
422
|
-
|
423
|
-
$out = '';
|
424
|
-
|
425
|
-
if(is_array($val)){
|
426
|
-
|
427
|
-
foreach($val as $key02 => $item){
|
428
|
-
|
429
|
-
//連結項目の処理
|
430
|
-
|
431
|
-
if(is_array($item)){
|
432
|
-
|
433
|
-
$out .= connect2val($item);
|
434
|
-
|
435
|
-
}else{
|
436
|
-
|
437
|
-
$out .= $item . ', ';
|
438
|
-
|
439
|
-
}
|
440
|
-
|
441
|
-
}
|
442
|
-
|
443
|
-
$out = rtrim($out,', ');
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
}else{ $out = $val; }//チェックボックス(配列)追記ここまで
|
448
|
-
|
449
|
-
if(get_magic_quotes_gpc()) { $out = stripslashes($out); }
|
450
|
-
|
451
|
-
$out = nl2br(h($out));//※追記 改行コードを<br>タグに変換
|
452
|
-
|
453
|
-
$key = h($key);
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
//全角→半角変換
|
458
|
-
|
459
|
-
if($hankaku == 1){
|
460
|
-
|
461
|
-
$out = zenkaku2hankaku($key,$out,$hankaku_array);
|
462
|
-
|
463
|
-
}
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
$html .= "<tr><th>".$key."</th><td>".$out;
|
468
|
-
|
469
|
-
$html .= '<input type="hidden" name="'.$key.'" value="'.str_replace(array("<br />","<br>"),"",$out).'" />';
|
470
|
-
|
471
|
-
$html .= "</td></tr>\n";
|
472
|
-
|
473
|
-
}
|
474
|
-
|
475
|
-
return $html;
|
476
|
-
|
477
|
-
}
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
//全角→半角変換
|
482
|
-
|
483
|
-
function zenkaku2hankaku($key,$out,$hankaku_array){
|
484
|
-
|
485
|
-
global $encode;
|
486
|
-
|
487
|
-
if(is_array($hankaku_array) && function_exists('mb_convert_kana')){
|
488
|
-
|
489
|
-
foreach($hankaku_array as $hankaku_array_val){
|
490
|
-
|
491
|
-
if($key == $hankaku_array_val){
|
492
|
-
|
493
|
-
$out = mb_convert_kana($out,'a',$encode);
|
494
|
-
|
495
|
-
}
|
496
|
-
|
497
|
-
}
|
498
|
-
|
499
|
-
}
|
500
|
-
|
501
|
-
return $out;
|
502
|
-
|
503
|
-
}
|
504
|
-
|
505
|
-
//配列連結の処理
|
506
|
-
|
507
|
-
function connect2val($arr){
|
508
|
-
|
509
|
-
$out = '';
|
510
|
-
|
511
|
-
foreach($arr as $key => $val){
|
512
|
-
|
513
|
-
if($key === 0 || $val == ''){//配列が未記入(0)、または内容が空のの場合には連結文字を付加しない(型まで調べる必要あり)
|
514
|
-
|
515
|
-
$key = '';
|
516
|
-
|
517
|
-
}elseif(strpos($key,"円") !== false && $val != '' && preg_match("/^[0-9]+$/",$val)){
|
518
|
-
|
519
|
-
$val = number_format($val);//金額の場合には3桁ごとにカンマを追加
|
520
|
-
|
521
|
-
}
|
522
|
-
|
523
|
-
$out .= $val . $key;
|
524
|
-
|
525
|
-
}
|
526
|
-
|
527
|
-
return $out;
|
528
|
-
|
529
|
-
}
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
//管理者宛送信メールヘッダ
|
534
|
-
|
535
|
-
function adminHeader($userMail,$post_mail,$BccMail,$to){
|
536
|
-
|
537
|
-
$header = '';
|
538
|
-
|
539
|
-
if($userMail == 1 && !empty($post_mail)) {
|
540
|
-
|
541
|
-
$header="From: $post_mail\n";
|
542
|
-
|
543
|
-
if($BccMail != '') {
|
544
|
-
|
545
|
-
$header.="Bcc: $BccMail\n";
|
546
|
-
|
547
|
-
}
|
548
|
-
|
549
|
-
$header.="Reply-To: ".$post_mail."\n";
|
550
|
-
|
551
|
-
}else {
|
552
|
-
|
553
|
-
if($BccMail != '') {
|
554
|
-
|
555
|
-
$header="Bcc: $BccMail\n";
|
556
|
-
|
557
|
-
}
|
558
|
-
|
559
|
-
$header.="Reply-To: ".$to."\n";
|
560
|
-
|
561
|
-
}
|
562
|
-
|
563
|
-
$header.="Content-Type:text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion();
|
564
|
-
|
565
|
-
return $header;
|
566
|
-
|
567
|
-
}
|
568
|
-
|
569
|
-
//管理者宛送信メールボディ
|
570
|
-
|
571
|
-
function mailToAdmin($arr,$subject,$mailFooterDsp,$mailSignature,$encode,$confirmDsp){
|
572
|
-
|
573
|
-
$adminBody="「".$subject."」からメールが届きました\n\n";
|
574
|
-
|
575
|
-
if(isset($arr[$dsp_name])) $userBody = h($arr[$dsp_name]). " 様\n";
|
576
|
-
|
577
|
-
$userBody.= $subject_text;
|
578
|
-
|
579
|
-
$adminBody .="===========================\n\n";
|
580
|
-
|
581
|
-
$adminBody.= postToMail($arr);//POSTデータを関数からセット
|
582
|
-
|
583
|
-
$adminBody.="\n===========================\n";
|
584
|
-
|
585
|
-
$adminBody.="送信された日時:".date( "Y/m/d (D) H:i:s", time() )."\n";
|
586
|
-
|
587
|
-
$adminBody.="送信者のIPアドレス:".@$_SERVER["REMOTE_ADDR"]."\n";
|
588
|
-
|
589
|
-
$adminBody.="送信者のホスト名:".getHostByAddr(getenv('REMOTE_ADDR'))."\n";
|
590
|
-
|
591
|
-
if($confirmDsp != 1){
|
592
|
-
|
593
|
-
$adminBody.="問い合わせのページURL:".@$_SERVER['HTTP_REFERER']."\n";
|
594
|
-
|
595
|
-
}else{
|
596
|
-
|
597
|
-
$adminBody.="問い合わせのページURL:".@$arr['httpReferer']."\n";
|
598
|
-
|
599
|
-
}
|
600
|
-
|
601
|
-
if($mailFooterDsp == 1) $adminBody.= $mailSignature;
|
602
|
-
|
603
|
-
return mb_convert_encoding($adminBody,"JIS",$encode);
|
604
|
-
|
605
|
-
}
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
//ユーザ宛送信メールヘッダ
|
610
|
-
|
611
|
-
省く
|
612
|
-
|
613
|
-
//ユーザ宛送信メールボディ
|
614
|
-
|
615
|
-
省く
|
616
|
-
|
617
|
-
//必須チェック関数
|
618
|
-
|
619
|
-
※ここは文字制限のため省く(PHP工房参照)
|
620
|
-
|
621
|
-
//-------------------
|
622
|
-
|
623
|
-
// 関数定義(END)
|
624
|
-
|
625
|
-
//------------------
|
626
|
-
|
627
|
-
?>
|
27
|
+
https://www.evernote.com/shard/s687/sh/6575c872-a53c-43b0-ba67-4ee792ad0442/820429a269a5c41cb1ffaf5de598851b
|