オンラインユーザ

ゲストユーザ: 1

ログイン

ログイン

QRコード

QR code

 2009年7月 3日(金) 12:13 KST

お問い合わせ

// +---------------------------------------------------------------------------+ // | Geeklog FormMail Static Page | // +---------------------------------------------------------------------------+ // | Copyright (C) 2000-2007 by the following authors: | // | | // | Authors: Hiroshi Sakuramoto - hiro AT winkey DOT jp | // | Version: 0.9.8 | // +---------------------------------------------------------------------------+ global $_CONF; // config.phpの変数を参照可能にする // +---------------------------------------------------------------------------+ // | 初期設定 | // +---------------------------------------------------------------------------+ # 入力フォームのURL $pageurl = $_SERVER["REQUEST_URI"]; // $_SERVER["REQUEST_URI"] が使えず正しく動かない場合は以下へ、 // 静的ページPHPを作成する時に入力したIDを入れてください。 // (wikiドキュメントのサンプル例だと'formmail') // ※IDを入力したら先頭の#を削除してください。(コメントをはずします) #$pageid = 'formmail'; # 管理者E-mail 複数指定はカンマ(,)で区切る $owner_email=$_CONF['site_mail']; # 必須入力チェック項目指定 # 必須にする INPUTタグの name属性の値をカンマ(,)区切りで指定する(スペース等はあけない) # 例) 'email,name,message' # A と B どちらかに必ず入力(両方入力も可) という場合はそれらname属性を(|)で区切る(スペース等はあけない) # 例) 'email,realname|nickname,message' # A と B どちらにも同じものを入力 という場合はそれらname属性を(=)で区切る(スペース等はあけない) # 例) 'email=reemail,name,message' $essential = 'email=reemail,seibetu,name,zip|city'; # メールアドレスチェック項目指定 # 入力された値がメールアドレスとして正しいかチェックをする # INPUTタグの name属性の値をカンマ(,)区切りで指定する(スペース等はあけない) # 例) 'email,reemail' $propriety_email = 'email,reemail'; # 確認画面の表示/非表示の指定 # 指定方法 表示: true , 非表示: false $disp_confirm = true; # CSVファイルに保存 # 指定方法 保存しない: 0 , 保存する(カンマ区切り): 1 , 保存する(タブ区切り): 2 $save_csv = 1; # CSVファイル保存場所 (直接入力時は最後にスラッシュ必須) $save_csv_path = $_CONF['path_data']; # CSVファイル名 $save_csv_name = 'formmail.csv'; # フォームの項目名 $frm_item = array('name' => 'お名前', 'email' => 'Eメール', 'reemail' => '確認用Eメール', 'seibetu' => '性別', 'zip' => '郵便番号', 'city' => '住所1', 'street' => '住所2', 'phone' => '電話番号', 'companyname' => '会社名', 'url' => '会社URL', 'message' => 'お問合せ内容', ); # 表示メッセージ $lang = array(// 入力フォームのタイトルやメッセージ 'title' => 'お問い合せフォーム', 'welcome' => '当サービスをご利用くださいまして、まことにありがとうございます。弊社では、お客様のプライバシー保護を重要と考えており,お送りいただいた情報は厳重に管理いたします。', 'smallmsg' => '*は必須入力です。このほか、郵便番号あるいは住所の入力をお願いします。', // { フォームのsubmitボタンのメッセージ 'zipsearch'=>'〒=>住所', # 郵便番号から住所を表示するボタン 'confirm'=>'確 認', # 確認ボタン 'transmit'=>'送 信', # 送信ボタン // } フォームのsubmitボタンのメッセージ // { 必須エラー時のメッセージ 'essentialmessage' => '以下の必須項目に入力がありませんでした。
ブラウザの「戻る」ボタンをクリックして,再入力してください。', 'oressential' => 'または', 'eqessentialjoin' => 'と', 'eqessential' => 'は、同じ値を入力してください', // } 必須エラー時のメッセージ // { メールアドレス形式エラー時のメッセージ 'proprietyemailmessage' => '以下の項目がメールアドレスとして正しくありませんでした。', // } メールアドレス形式エラー時のメッセージ // { 完了HTML&メールのメッセージ 'receipt' => 'ありがとうございました。', 'subject1'=> 'お問合せがきました', 'subject2'=> 'お問合せありがとうございます', 'sign1' => '---------------------------
ロード・インターナショナル アライアンス・サポート
http://www.skojp.com', // } 完了HTML&メールのメッセージ // { システムエラーのメッセージ 'ownertransmiterror'=>'オーナーメール処理中、一部のアドレスでエラーが発生しましたが、処理を続けました。', 'transmiterror'=>'処理中にエラーが発生しました。', // } システムエラーのメッセージ ); // +---------------------------------------------------------------------------+ // | 初期処理 | // +---------------------------------------------------------------------------+ # フォームから変数を設定 $action = COM_applyFilter($_POST['action']); foreach ($_POST as $k => $v) { # COM_applyFileterでカンマ(,)が消されるので別処理 if (($k == 'essential' || $k == 'proprietyemail') && !empty($_POST[$k])) { $es = explode(",", $_POST[$k]); $esv = array(); foreach ($es as $e) { $esv[] = COM_applyFilter($e); } $fld_list[$k] = implode(",", $esv); # COM_applyFileterでBR(改行)が消されるので別処理 } elseif ($k == 'sign' && !empty($_POST[$k])) { $es = preg_split('//', $_POST[$k]); $esv = array(); foreach ($es as $e) { $esv[] = COM_applyFilter($e); } $fld_list[$k] = implode("
", $esv); } else { $fld_list[$k] = preg_replace('/,/', ',', $_POST[$k]); $fld_list[$k] = preg_replace('/"/', '”', $fld_list[$k]); $fld_list[$k] = preg_replace("/'/", "’", $fld_list[$k]); $fld_list[$k] = preg_replace('/`/', '‘', $fld_list[$k]); $fld_list[$k] = preg_replace('/;/', ';', $fld_list[$k]); $fld_list[$k] = preg_replace(preg_quote('#'.chr(92).'#'), '¥', $fld_list[$k]); $fld_list[$k] = COM_applyFilter($fld_list[$k]); } } # フォーム入力値で初期変数を上書き if (!empty($fld_list['essential'])) { $essential = $fld_list['essential']; } if (!empty($fld_list['proprietyemail'])) { $propriety_email = $fld_list['proprietyemail']; } if (!empty($fld_list['title'])) { $lang['title'] = $fld_list['title']; } if (!empty($fld_list['endmessage'])) { $lang['receipt'] = $fld_list['endmessage']; } if (!empty($fld_list['savecsv'])) { $save_csv = $fld_list['savecsv']; } if (!empty($fld_list['savecsvname'])) { $save_csv_name = $fld_list['savecsvname']; } # CSVファイルのフルパス $save_csv_file = $save_csv_path . $save_csv_name; # 確認画面表示/非表示処理 if ($disp_confirm) { $lang['submit'] = $lang['confirm']; } else { $lang['submit'] = $lang['transmit']; } # フォーム項目一致 # 送信された項目すべてが $frm_item と同一かチェック # 同一でなければ静的ページHTMLからの不特定のname属性を持ったものとして処理 $agree_frmitem = true; foreach ($_POST as $k => $v) { if ($k == 'action') { continue; } if ($k == 'submit') { continue; } if ($k == 'essential') { continue; } if ($k == 'proprietyemail') { continue; } if ($k == 'erremailname') { continue; } if ($k == 'subject') { continue; } if ($k == 'ownersubject') { continue; } if ($k == 'sign') { continue; } if ($k == 'title') { continue; } if ($k == 'endmessage') { continue; } if ($k == 'savecsv') { continue; } if ($k == 'savecsvname') { continue; } if (!array_key_exists($k, $frm_item)) { $agree_frmitem = false; } } # pageidからpageurlを作成 if (!empty($pageid)) { $pageurl = COM_buildUrl($_CONF['site_url'].'/staticpages/index.php?page='.$pageid); } // +---------------------------------------------------------------------------+ // | 第1ステップ: フォーム表示 | // +---------------------------------------------------------------------------+ if (empty($action) || (!empty($action) && $_POST['submit'] == $lang['zipsearch'])) { /** * フォーム画面HTML(サンプル){ ここから */ $jusho = ''; $otoko = ''; $onna = ''; if (!empty($action) && $_POST['submit'] == $lang['zipsearch']) { require_once ('XML/RPC.php'); $zip = $fld_list['zip']; $msg = new XML_RPC_Message('yubin.fetchAddressByPostcode', array(new XML_RPC_Value($zip, 'string'))); $cli = new XML_RPC_Client('/service/xmlrpc/', 'yubin.senmon.net', 80); $resp = $cli->send( $msg ); COM_errorLog("zip search: faultCode=".$resp->faultCode(),1); if ($resp && ! $resp->faultCode() ) { $val = $resp->value(); $res = XML_RPC_decode($val); $jusho = $res[0]['pref'] . $res[0]['city'] . $res[0]['town']; } $otoko = $fld_list['seibetu'] == '男' ? ' checked' : ''; $onna = $fld_list['seibetu'] == '女' ? ' checked' : ''; } $retval = <<




*:
*:
*:
*: 
:例)1234567
:
:
:例)01-2345-6789
:
:
:
END; /** * } ここまで フォーム画面HTML(サンプル) */ // +---------------------------------------------------------------------------+ // | 第2ステップ: 入力チェック | // +---------------------------------------------------------------------------+ } elseif (!empty($action)) { # 必須チェック $errmsg = ''; $errkey = array(); if (!empty($essential)) { $es1 = explode(",", $essential); foreach ($es1 as $v) { # or 処理 if ( strpos($v, '|') !== false ) { $or_es = explode("|", $v); $or_err = true; $or_errkey = array(); foreach ($or_es as $or_v) { if (empty($fld_list[$or_v])) { if ($agree_frmitem) { $or_errkey[] = $frm_item[$or_v]; } else { if (!empty($fld_list['erremailname']) && $or_v == 'email') { $or_errkey[] = $fld_list['erremailname']; } else { $or_errkey[] = $or_v; } } } else { $or_err = false; } } if ($or_err) { $errkey[] = implode(' '.$lang['oressential'].' ', $or_errkey); } # equal 処理 } elseif ( strpos($v, '=') !== false ) { $eq_es = explode("=", $v); $eq_err = false; $chk = array(); foreach ($eq_es as $eq_v) { if (empty($fld_list[$eq_v])) { if ($agree_frmitem) { $errkey[] = $frm_item[$eq_v]; } else { if (!empty($fld_list['erremailname']) && $eq_v == 'email') { $errkey[] = $fld_list['erremailname']; } else { $errkey[] = $eq_v; } } } else { $chk[] = $fld_list[$eq_v]; } } if (count($eq_es) == count($chk)) { $bk_val= $chkval; $chkval = array_shift($chk); foreach ($chk as $eq_v) { if ($chkval != $eq_v) { $eq_err = true; } } if ($eq_err) { $frm_name = array(); foreach ($eq_es as $eq_v2) { if ($agree_frmitem) { $frm_name[] = $frm_item[$eq_v2]; } else { if (!empty($fld_list['erremailname']) && $eq_v2 == 'email') { $frm_name[] = $fld_list['erremailname']; } else { $frm_name[] = $eq_v2; } } } $errkey[] = implode(' '.$lang['eqessentialjoin'].' ', $frm_name).$lang['eqessential']; } } # 普通に必須処理 } else { if (empty($fld_list[$v])) { if ($agree_frmitem) { $errkey[] = $frm_item[$v]; } else { if (!empty($fld_list['erremailname']) && $v == 'email') { $errkey[] = $fld_list['erremailname']; } else { $errkey[] = $v; } } } } } } # エラーがあれば画面に表示 if (!empty($errkey)) { $msg = "

".$lang['essentialmessage']."

    "; foreach ($errkey as $v) { $msg .= "
  • ".$v."
  • "; } $msg .= "
"; //$msg .= "
fldlist:".print_r($fld_list, true).", post: ".print_r($_POST, true); $retval = COM_errorLog($msg, 2); } # E-mailチェック if (empty($errkey)) { if (!empty($propriety_email)) { $pr1 = explode(",", $propriety_email); foreach ($pr1 as $v) { if (!COM_isemail($fld_list[$v])) { if ($agree_frmitem) { $errkey[] = $frm_item[$v]; } else { if (!empty($fld_list['erremailname']) && $v == 'email') { $errkey[] = $fld_list['erremailname']; } else { $errkey[] = $v; } } } } } if (!empty($errkey)) { $msg = "

".$lang['proprietyemailmessage']."

    "; foreach ($errkey as $v) { $msg .= "
  • ".$v."
  • "; } $msg .= "
"; //$msg .= "
fldlist:".print_r($fld_list, true).", post: ".print_r($_POST, true); $retval = COM_errorLog($msg, 2); } } } // +---------------------------------------------------------------------------+ // | 第3ステップ: 確認画面表示 | // +---------------------------------------------------------------------------+ if (empty($errkey) && $action == $lang['confirm'] && $_POST['submit'] != $lang['zipsearch']) { # 改行コードを
に変換 foreach ($fld_list as $k => $v) { $fld_list[$k] = nl2br($fld_list[$k]); } /** * 確認画面HTML(サンプル){ ここから */ # フォーム項目が上部の初期設定と同じなら自由なレイアウトのHTML作成 if ($agree_frmitem) { $retval = <<




:
:
:
:
:
:
:
:
:
:
:
END; # フォーム項目が上部の初期設定と違う場合はほぼ自動処理でHTML作成 } else { $retval = <<




END; foreach (array("subject","ownersubject","sign","title","endmessage","savecsv","savecsvname") as $v) { if (!empty($fld_list[$v])) { $retval .= << END; } } $retval .= << END; foreach ($fld_list as $k => $v) { if ($k == 'action') { continue; } if ($k == 'submit') { continue; } if ($k == 'essential') { continue; } if ($k == 'proprietyemail') { continue; } if ($k == 'erremailname') { continue; } if ($k == 'subject') { continue; } if ($k == 'ownersubject') { continue; } if ($k == 'sign') { continue; } if ($k == 'title') { continue; } if ($k == 'endmessage') { continue; } if ($k == 'savecsv') { continue; } if ($k == 'savecsvname') { continue; } $retval .= "$k:$v"; } $retval .= <<
END; } /** * } ここまで 確認画面HTML(サンプル) */ // +---------------------------------------------------------------------------+ // | 第4ステップ: 完了表示&メール送信 | // +---------------------------------------------------------------------------+ } elseif (empty($errkey) && $action == $lang['transmit'] && $_POST['submit'] != $lang['zipsearch']) { $msg .= ""; # write confirm order /** * 完了画面HTML(サンプル){ ここから */ # フォーム項目が上部の初期設定と同じなら自由なレイアウトのHTML作成 if ($agree_frmitem) { $out_html = <<
様 ()
E-mail: Tel:






END; # フォーム項目が上部の初期設定と違う場合はほぼ自動処理でHTML作成 } else { $out_html = <<
END; foreach ($fld_list as $k => $v) { if ($k == 'action') { continue; } if ($k == 'submit') { continue; } if ($k == 'essential') { continue; } if ($k == 'proprietyemail') { continue; } if ($k == 'erremailname') { continue; } if ($k == 'subject') { continue; } if ($k == 'ownersubject') { continue; } if ($k == 'sign') { continue; } if ($k == 'title') { continue; } if ($k == 'endmessage') { continue; } if ($k == 'savecsv') { continue; } if ($k == 'savecsvname') { continue; } $out_html .= "$k: $v
"; } $oh_sign = empty($fld_list['sign']) ? $lang['sign'] : $fld_list['sign']; $out_html .= << $oh_sign END; } /** * } ここまで 完了画面HTML(サンプル) */ #
を改行コードに変換 foreach ($fld_list as $k => $v) { $fld_list[$k] = ereg_replace("
", LB, $fld_list[$k]); } $lang['sign1'] = ereg_replace("
", LB, $lang['sign1']); /** * 送信メール内容(サンプル){ ここから */ # フォーム項目が上部の初期設定と同じなら自由なレイアウトのHTML作成 if ($agree_frmitem) { $out_mail = << $v) { if ($k == 'action') { continue; } if ($k == 'submit') { continue; } if ($k == 'essential') { continue; } if ($k == 'proprietyemail') { continue; } if ($k == 'erremailname') { continue; } if ($k == 'subject') { continue; } if ($k == 'ownersubject') { continue; } if ($k == 'sign') { continue; } if ($k == 'title') { continue; } if ($k == 'endmessage') { continue; } if ($k == 'savecsv') { continue; } if ($k == 'savecsvname') { continue; } $out_mail .= "$k: $v".LB; } $om_sign = empty($fld_list['sign']) ? $lang['sign1'] : $fld_list['sign']; $out_mail .= << 0) { $delimiter = ','; if ($save_csv > 1) { $delimiter = chr(9); } $enclosure = '"'; # CSV出力 $fp = fopen($save_csv_file, 'a'); $str = ''; $escape_char = chr(92); foreach ($fld_list as $k => $v) { if ($k == 'action') { continue; } if ($k == 'submit') { continue; } if ($k == 'essential') { continue; } if ($k == 'proprietyemail') { continue; } if ($k == 'erremailname') { continue; } if ($k == 'subject') { continue; } if ($k == 'ownersubject') { continue; } if ($k == 'sign') { continue; } if ($k == 'title') { continue; } if ($k == 'endmessage') { continue; } if ($k == 'savecsv') { continue; } if ($k == 'savecsvname') { continue; } if (strpos($v, $delimiter) !== false || strpos($v, $enclosure) !== false || strpos($v, chr(10)) !== false || strpos($v, chr(13)) !== false || strpos($v, chr(9)) !== false || strpos($v, ' ') !== false) { $str2 = $enclosure; $escaped = 0; $len = strlen($v); for ($i=0;$i<$len;$i++) { if ($v[$i] == $escape_char) { $escaped = 1; } else if (!$escaped && $v[$i] == $enclosure) { $str2 .= $enclosure; } else { $escaped = 0; } $str2 .= $v[$i]; } $str2 .= $enclosure; $str .= $str2.$delimiter; } else { $str .= $v.$delimiter; } } $str = substr($str,0,-1); $str .= "n"; fwrite($fp, $str); fclose($fp); } $retval = $msg . $out_html; } else { $retval = $lang['transmiterror']; # メール送信が失敗したら } } http://www.skojp.com/staticpages/index.php/formmail

最終更新日: 2009年4月14日(火) 21:35 KST|74 閲覧件数

表示形式
コメント投稿

コメントは投稿者の責任においてなされるものであり、サイト管理者は責任を負いません。