問い合わせフォームのディレクトリ変更作業 2017年2月25日
問い合わせフォームのディレクトリ変更作業
WordPress側の記述
==========
予約お申込フォーム|テストサイト
○○○の予約を下記の通り申込みします。
下記フォームに必要事項を入力後、確認ボタンを押してください。
==========
=’)) {//PHP5.1.0以上の場合のみタイムゾーンを定義
date_default_timezone_set(‘Asia/Tokyo’);//タイムゾーンの設定(日本以外の場合には適宜設定ください)
}
/*——————————————————————————————————————-
* ★以下設定時の注意点
* ・値(=の後)は数字以外の文字列(一部を除く)はダブルクオーテーション「”」、または「’」で囲んでいます。
* ・これをを外したり削除したりしないでください。後ろのセミコロン「;」も削除しないください。
* ・また先頭に「$」が付いた文字列は変更しないでください。数字の1または0で設定しているものは必ず半角数字で設定下さい。
* ・メールアドレスのname属性の値が「Email」ではない場合、以下必須設定箇所の「$Email」の値も変更下さい。
* ・name属性の値に半角スペースは使用できません。
*以上のことを間違えてしまうとプログラムが動作しなくなりますので注意下さい。
——————————————————————————————————————-*/
//————————— 必須設定 必ず設定してください ———————–
//サイトのトップページのURL ※デフォルトでは送信完了後に「トップページへ戻る」ボタンが表示されますので
$site_top = “http://artistclip.com/all/”;
// 管理者メールアドレス ※メールを受け取るメールアドレス(複数指定する場合は「,」で区切ってください 例 $to = “aa@aa.aa,bb@bb.bb”;)
$to = “luke681213@gmail.com”;
//フォームのメールアドレス入力箇所のname属性の値(name=”○○” の○○部分)
$Email = “Email”;
/*————————————————————————————————
以下スパム防止のための設定
※有効にするにはこのファイルとフォームページが同一ドメイン内にある必要があります
————————————————————————————————*/
//スパム防止のためのリファラチェック(フォームページが同一ドメインであるかどうかのチェック)(する=1, しない=0)
$Referer_check = 0;
//リファラチェックを「する」場合のドメイン ※以下例を参考に設置するサイトのドメインを指定して下さい。
$Referer_check_domain = “artistclip.com”;
//————————— 必須設定 ここまで ————————————
//———————- 任意設定 以下は必要に応じて設定してください ————————
// 管理者宛のメールで差出人を送信者のメールアドレスにする(する=1, しない=0)
// する場合は、メール入力欄のname属性の値を「$Email」で指定した値にしてください。
//メーラーなどで返信する場合に便利なので「する」がおすすめです。
$userMail = 1;
// Bccで送るメールアドレス(複数指定する場合は「,」で区切ってください 例 $BccMail = “aa@aa.aa,bb@bb.bb”;)
$BccMail = “”;
// 管理者宛に送信されるメールのタイトル(件名)
$subject = “市民伝言板予約お申込フォーム|テストサイト artistclip.com”;
// 送信確認画面の表示(する=1, しない=0)
$confirmDsp = 1;
// 送信完了後に自動的に指定のページ(サンクスページなど)に移動する(する=1, しない=0)
// CV率を解析したい場合などはサンクスページを別途用意し、URLをこの下の項目で指定してください。
// 0にすると、デフォルトの送信完了画面が表示されます。
$jumpPage = 1;
// 送信完了後に表示するページURL(上記で1を設定した場合のみ)※httpから始まるURLで指定ください。
$thanksPage = “http://artistclip.com/all/?page_id=54863”;
// 必須入力項目を設定する(する=1, しない=0)
$requireCheck = 1;
/* 必須入力項目(入力フォームで指定したname属性の値を指定してください。(上記で1を設定した場合のみ)
値はシングルクォーテーションで囲み、複数の場合はカンマで区切ってください。フォーム側と順番を合わせると良いです。
配列の形「name=”○○[]”」の場合には必ず後ろの[]を取ったものを指定して下さい。*/
$require = array(‘御社名・団体名’,’御担当者様氏名’,’フリガナ’,’郵便番号’,’ご住所’,’連絡先電話番号’,’出演人数’,’イベント告知内容概要’,’Email’);
//———————————————————————-
// 自動返信メール設定(START)
//———————————————————————-
// 差出人に送信内容確認メール(自動返信メール)を送る(送る=1, 送らない=0)
// 送る場合は、フォーム側のメール入力欄のname属性の値が上記「$Email」で指定した値と同じである必要があります
$remail = 1;
//自動返信メールの送信者欄に表示される名前 ※あなたの名前や会社名など(もし自動返信メールの送信者名が文字化けする場合ここは空にしてください)
$refrom_name = “テスト用予約お申込フォーム(自動返信です)”;
// 差出人に送信確認メールを送る場合のメールのタイトル(上記で1を設定した場合のみ)
$re_subject = “テスト申込みありがとうございました”;
//フォーム側の「名前」箇所のname属性の値 ※自動返信メールの「○○様」の表示で使用します。
//指定しない、または存在しない場合は、○○様と表示されないだけです。あえて無効にしてもOK
$dsp_name = ‘お名前’;
//自動返信メールの冒頭の文言 ※日本語部分のみ変更可
$remail_text = <<< TEXT
出演のお申込み(テスト)ありがとうございました。
送信内容は以下になります。
TEXT;
//自動返信メールに署名(フッター)を表示(する=1, しない=0)※管理者宛にも表示されます。
$mailFooterDsp = 1;
//上記で「1」を選択時に表示する署名(フッター)(FOOTER~FOOTER;の間に記述してください)
$mailSignature = <<< FOOTER
──────────────────────
連絡先記入欄
──────────────────────
FOOTER;
//----------------------------------------------------------------------
// 自動返信メール設定(END)
//----------------------------------------------------------------------
//メールアドレスの形式チェックを行うかどうか。(する=1, しない=0)
//※デフォルトは「する」。特に理由がなければ変更しないで下さい。メール入力欄のname属性の値が上記「$Email」で指定した値である必要があります。
$mail_check = 1;
//全角英数字→半角変換を行うかどうか。(する=1, しない=0)
$hankaku = 0;
//全角英数字→半角変換を行う項目のname属性の値(name="○○"の「○○」部分)
//※複数の場合にはカンマで区切って下さい。(上記で「1」を指定した場合のみ有効)
//配列の形「name="○○[]"」の場合には必ず後ろの[]を取ったものを指定して下さい。
$hankaku_array = array('電話番号','金額');
//------------------------------- 任意設定ここまで ---------------------------------------------
// 以下の変更は知識のある方のみ自己責任でお願いします。
//----------------------------------------------------------------------
// 関数実行、変数初期化
//----------------------------------------------------------------------
$encode = "UTF-8";//このファイルの文字コード定義(変更不可)
if(isset($_GET)) $_GET = sanitize($_GET);//NULLバイト除去//
if(isset($_POST)) $_POST = sanitize($_POST);//NULLバイト除去//
if(isset($_COOKIE)) $_COOKIE = sanitize($_COOKIE);//NULLバイト除去//
if($encode == 'SJIS') $_POST = sjisReplace($_POST,$encode);//Shift-JISの場合に誤変換文字の置換実行
$funcRefererCheck = refererCheck($Referer_check,$Referer_check_domain);//リファラチェック実行
//変数初期化
$sendmail = 0;
$empty_flag = 0;
$post_mail = '';
$errm ='';
$header ='';
if($requireCheck == 1) {
$requireResArray = requireCheck($require);//必須チェック実行し返り値を受け取る
$errm = $requireResArray['errm'];
$empty_flag = $requireResArray['empty_flag'];
}
//メールアドレスチェック
if(empty($errm)){
foreach($_POST as $key=>$val) {
if($val == “confirm_submit”) $sendmail = 1;
if($key == $Email) $post_mail = h($val);
if($key == $Email && $mail_check == 1 && !empty($val)){
if(!checkMail($val)){
$errm .= “
【”.$key.”】はメールアドレスの形式が正しくありません。
\n”;
$empty_flag = 1;
}
}
}
}
if(($confirmDsp == 0 || $sendmail == 1) && $empty_flag != 1){
//差出人に届くメールをセット
if($remail == 1) {
$userBody = mailToUser($_POST,$dsp_name,$remail_text,$mailFooterDsp,$mailSignature,$encode);
$reheader = userHeader($refrom_name,$to,$encode);
$re_subject = “=?iso-2022-jp?B?”.base64_encode(mb_convert_encoding($re_subject,”JIS”,$encode)).”?=”;
}
//管理者宛に届くメールをセット
$adminBody = mailToAdmin($_POST,$subject,$mailFooterDsp,$mailSignature,$encode,$confirmDsp);
$header = adminHeader($userMail,$post_mail,$BccMail,$to);
$subject = “=?iso-2022-jp?B?”.base64_encode(mb_convert_encoding($subject,”JIS”,$encode)).”?=”;
mail($to,$subject,$adminBody,$header);
if($remail == 1 && !empty($post_mail)) mail($post_mail,$re_subject,$userBody,$reheader);
}
else if($confirmDsp == 1){
/* ▼▼▼送信確認画面のレイアウト※編集可 オリジナルのデザインも適用可能▼▼▼ */
?>
入力にエラーがあります。下記をご確認の上「戻る」ボタンにて修正をお願い致します。
確認画面
以下の内容で間違いがなければ、「送信する」ボタンを押してください。
入力にエラーがあります。下記をご確認の上「戻る」ボタンにて修正をお願い致します。
ご応募ありがとうございました。
送信は正常に完了しました。
$val){
$key = str_replace(‘\’,’ー’,$key);
$resArray[$key] = $val;
}
return $resArray;
}
//送信メールにPOSTデータをセットする関数
function postToMail($arr){
global $hankaku,$hankaku_array;
$resArray = ”;
foreach($arr as $key => $val) {
$out = ”;
if(is_array($val)){
foreach($val as $key02 => $item){
//連結項目の処理
if(is_array($item)){
$out .= connect2val($item);
}else{
$out .= $item . ‘, ‘;
}
}
$out = rtrim($out,’, ‘);
}else{ $out = $val; }//チェックボックス(配列)追記ここまで
if(get_magic_quotes_gpc()) { $out = stripslashes($out); }
//全角→半角変換
if($hankaku == 1){
$out = zenkaku2hankaku($key,$out,$hankaku_array);
}
if($out != “confirm_submit” && $key != “httpReferer”) {
$resArray .= “【 “.h($key).” 】 “.h($out).”\n”;
}
}
return $resArray;
}
//確認画面の入力内容出力用関数
function confirmOutput($arr){
global $hankaku,$hankaku_array;
$html = ”;
foreach($arr as $key => $val) {
$out = ”;
if(is_array($val)){
foreach($val as $key02 => $item){
//連結項目の処理
if(is_array($item)){
$out .= connect2val($item);
}else{
$out .= $item . ‘, ‘;
}
}
$out = rtrim($out,’, ‘);
}else{ $out = $val; }//チェックボックス(配列)追記ここまで
if(get_magic_quotes_gpc()) { $out = stripslashes($out); }
$out = nl2br(h($out));//※追記 改行コードを
タグに変換
$key = h($key);
//全角→半角変換
if($hankaku == 1){
$out = zenkaku2hankaku($key,$out,$hankaku_array);
}
$html .= “
$html .= ‘“,”
“),””,$out).'” />’;
$html .= “
\n”;
}
return $html;
}
//全角→半角変換
function zenkaku2hankaku($key,$out,$hankaku_array){
global $encode;
if(is_array($hankaku_array) && function_exists(‘mb_convert_kana’)){
foreach($hankaku_array as $hankaku_array_val){
if($key == $hankaku_array_val){
$out = mb_convert_kana($out,’a’,$encode);
}
}
}
return $out;
}
//配列連結の処理
function connect2val($arr){
$out = ”;
foreach($arr as $key => $val){
if($key === 0 || $val == ”){//配列が未記入(0)、または内容が空のの場合には連結文字を付加しない(型まで調べる必要あり)
$key = ”;
}elseif(strpos($key,”円”) !== false && $val != ” && preg_match(“/^[0-9]+$/”,$val)){
$val = number_format($val);//金額の場合には3桁ごとにカンマを追加
}
$out .= $val . $key;
}
return $out;
}
//管理者宛送信メールヘッダ
function adminHeader($userMail,$post_mail,$BccMail,$to){
$header = ”;
if($userMail == 1 && !empty($post_mail)) {
$header=”From: $post_mail\n”;
if($BccMail != ”) {
$header.=”Bcc: $BccMail\n”;
}
$header.=”Reply-To: “.$post_mail.”\n”;
}else {
if($BccMail != ”) {
$header=”Bcc: $BccMail\n”;
}
$header.=”Reply-To: “.$to.”\n”;
}
$header.=”Content-Type:text/plain;charset=iso-2022-jp\nX-Mailer: PHP/”.phpversion();
return $header;
}
//管理者宛送信メールボディ
function mailToAdmin($arr,$subject,$mailFooterDsp,$mailSignature,$encode,$confirmDsp){
$adminBody=”「”.$subject.”」からメールが届きました\n\n”;
$adminBody .=”===========================\n\n”;
$adminBody.= postToMail($arr);//POSTデータを関数からセット
$adminBody.=”\n===========================\n”;
$adminBody.=”送信された日時:”.date( “Y/m/d (D) H:i:s”, time() ).”\n”;
$adminBody.=”送信者のIPアドレス:”.@$_SERVER[“REMOTE_ADDR”].”\n”;
$adminBody.=”送信者のホスト名:”.getHostByAddr(getenv(‘REMOTE_ADDR’)).”\n”;
if($confirmDsp != 1){
$adminBody.=”問い合わせのページURL:”.@$_SERVER[‘HTTP_REFERER’].”\n”;
}else{
$adminBody.=”問い合わせのページURL:”.@$arr[‘httpReferer’].”\n”;
}
if($mailFooterDsp == 1) $adminBody.= $mailSignature;
return mb_convert_encoding($adminBody,”JIS”,$encode);
}
//ユーザ宛送信メールヘッダ
function userHeader($refrom_name,$to,$encode){
$reheader = “From: “;
if(!empty($refrom_name)){
$default_internal_encode = mb_internal_encoding();
if($default_internal_encode != $encode){
mb_internal_encoding($encode);
}
$reheader .= mb_encode_mimeheader($refrom_name).” <".$to.">\nReply-To: “.$to;
}else{
$reheader .= “$to\nReply-To: “.$to;
}
$reheader .= “\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/”.phpversion();
return $reheader;
}
//ユーザ宛送信メールボディ
function mailToUser($arr,$dsp_name,$remail_text,$mailFooterDsp,$mailSignature,$encode){
$userBody = ”;
if(isset($arr[$dsp_name])) $userBody = h($arr[$dsp_name]). ” 様\n”;
$userBody.= $remail_text;
$userBody.=”\n===========================\n\n”;
$userBody.= postToMail($arr);//POSTデータを関数からセット
$userBody.=”\n===========================\n\n”;
$userBody.=”送信日時:”.date( “Y/m/d (D) H:i:s”, time() ).”\n”;
if($mailFooterDsp == 1) $userBody.= $mailSignature;
return mb_convert_encoding($userBody,”JIS”,$encode);
}
//必須チェック関数
function requireCheck($require){
$res[‘errm’] = ”;
$res[‘empty_flag’] = 0;
foreach($require as $requireVal){
$existsFalg = ”;
foreach($_POST as $key => $val) {
if($key == $requireVal) {
//連結指定の項目(配列)のための必須チェック
if(is_array($val)){
$connectEmpty = 0;
foreach($val as $kk => $vv){
if(is_array($vv)){
foreach($vv as $kk02 => $vv02){
if($vv02 == ”){
$connectEmpty++;
}
}
}
}
if($connectEmpty > 0){
$res[‘errm’] .= “
【”.h($key).”】は必須項目です。
\n”;
$res[‘empty_flag’] = 1;
}
}
//デフォルト必須チェック
elseif($val == ”){
$res[‘errm’] .= “
【”.h($key).”】は必須項目です。
\n”;
$res[‘empty_flag’] = 1;
}
$existsFalg = 1;
break;
}
}
if($existsFalg != 1){
$res[‘errm’] .= “
【”.$requireVal.”】が未選択です。
\n”;
$res[‘empty_flag’] = 1;
}
}
return $res;
}
//リファラチェック
function refererCheck($Referer_check,$Referer_check_domain){
if($Referer_check == 1 && !empty($Referer_check_domain)){
if(strpos($_SERVER[‘HTTP_REFERER’],$Referer_check_domain) === false){
return exit(‘
リファラチェックエラー。フォームページのドメインとこのファイルのドメインが一致しません
‘);
}
}
}
function copyright(){
echo ‘– PHP工房 –‘;
}
//———————————————————————-
// 関数定義(END)
//———————————————————————-
?>
==========