<?php
/* お問合せフォーム 2009/08/01 ToR */
mb_language("ja");
mb_internal_encoding("SJIS");
mb_regex_encoding("SJIS");

// 送信元・送信先アドレス
$from "php4all@s3.to";
$to "tobibako@gmail.com";

// 件名
$subject "【ご意見フォーム】";

/* 項目リスト name=>項目 value=>項目名 req=>必須 1,自由 0 chk=>チェック関数 */
// お名前
$row[] = array('name'=>'name','value'=>'お名前','req'=>1,'chk'=>'');
// 性別
$row[] = array('name'=>'sex','value'=>'性別','req'=>0,'chk'=>'');
// Eメール
$row[] = array('name'=>'email','value'=>'Eメールアドレス','req'=>1,'chk'=>'check_email');
// フリガナ
$row[] = array('name'=>'title','value'=>'件名','req'=>1,'chk'=>'');
// コメント
$row[] = array('name'=>'message','value'=>'コメント','req'=>1,'chk'=>'');
// 備考
$row[] = array('name'=>'note','value'=>'備考','req'=>0,'chk'=>'');
// どこで
$row[] = array('name'=>'where','value'=>'どこでこのHPをお知りになりましたか?','req'=>0,'chk'=>'');


// 送信後のjump先(二重投稿防止の為)
$url $_SERVER['SCRIPT_URI']."?act=done";


$post array_map("trim"$_POST);
$chk = new chk();

if (isset(
$post['act'])) {
  switch(
$post['act']) {
    
// 確認
  
case 'chk':
    foreach (
$row as $v) {
      ${
$v['name']} = htmlspecialchars($post[$v['name']]);

      if (
$v['req'] == 1) {
        if (
$e $chk->check_null($post[$v['name']],$v['value'])) $err[] = $e;
      }
      if (
$v['chk'] != "") {
        if (
$e $chk->$v['chk']($post[$v['name']],$v['value'])) {
          
$err[] = $e;
          ${
$v['name']} = NULL;
        }
      }
    }
    
// エラー
    
if (is_array($err)) {
      break;
    }
    
// メール送信
  
case 'done':
    
$body "[送信日時] ".date("Y/m/d H:i:s")."\n";
    foreach (
$row as $v) {
      
$body.= "[".$v['value']."]\n".$post[$v['name']]."\n";
    }
    
$ip getenv('REMOTE_ADDR');
    
$body.= "------------\n[IP/HOST] ".gethostbyaddr($ip)."(".$ip.")\n";

    
$head "From:$from";
   
// $subject = mb_encode_mimeheader($subject);
    
$body mb_convert_kana($body"K""SJIS");
    
$body str_replace("\r"""$body);
    
mb_send_mail($to$subject$body$head);

    
header("Location: $url");
    exit;
    break;
  }
}


if (
$_GET['act'] == "done") {
  die(
"送信が完了しました");
//  require("form_done.html");
}
else {
  require(
"form.php");
}

// チェック関数
class chk {
  
// チェック空(データ,項目名,[文言])
  
function check_null ($data$name$str="設定") {
    return  (
$data == "") ? $name."を".$str."して下さい" NULL;
  }
  
// チェックカタカナ
  
function check_kana ($data$name$req=0) {
    
$flag = ($req == 0) ? $data TRUE;
    
$data str_replace(array(' ',' '), ''$data);
    return (
$flag && !mb_ereg("^[ァ-ヶ]+$",$data)) ? $name."は全角カタカナで入力して下さい" NULL;
  }
  
// チェック電話番号
  
function check_tel ($data$name$req=0) {
    
$flag = ($req == 0) ? $data TRUE;
    return (
$flag && !preg_match("/^\d{2,5}-?\d{1,4}-?\d{3,4}$/",$data)) ? $name."を正しく入力して下さい" NULL;
  }
  
// チェックE-mail
  
function check_email ($data$name$req=0) {
    
$flag = ($req == 0) ? $data TRUE;
    return (
$flag && !preg_match("/^[-\w\.]+@[-\w\.]+$/",$data)) ? $name."を正確に入力して下さい" NULL;
  }
}
?>