質問編集履歴

1

ソースコードをリンクURLのページに記載し直しました。

2016/01/16 18:26

投稿

san37
san37

スコア11

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
- // 管理者メールアドレス ※メールを受け取るメールアドレス(複数指定する場合は「,」で区切ってください 例 $to = "aa@aa.aa,bb@bb.bb";)
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