header('content-type: text/html; charset=utf-8');
//共通関数
mb_language("japanese");
mb_internal_encoding("UTF-8");
require_once 'form_function.php';
//各ページファイル
define('DEF_PAGE_FORM', 'page_form.php'); //フォーム画面
define('DEF_PAGE_CONFIRM', 'page_confirm.php'); //確認画面
define('DEF_PAGE_COMPLETE', 'page_complete.php'); //完了画面
/*
■
■フォーム関連設定
■
*/
//フォーム名称
define('DEF_FORM_NAME', 'contact'); //半角数字
//フォームクラス配列定義
$FORM_LIST = array(
new FormValue(false, ''),
new FormValue('company', '会社名', FORM_TYPE_STRING, true),
new FormValue('name', 'お名前', FORM_TYPE_STRING, true),
new FormValue('email1', 'メールアドレス', FORM_TYPE_STRING, true),
new FormValue('tel', '電話番号', FORM_TYPE_STRING, true),
new FormValue('contact', '求人内容/掲載希望時期など', FORM_TYPE_STRING, true),
);
/*
FromValue('フォーム名称', 'ラベル(mail)', '日本語名称(mail,csv)', '','フォーム型', 入力必須フラグ, 最小値, 最大値)
■フォーム型一覧
文字列 :FORM_TYPE_STRING どんな値でも許可するデフォルト型
メールアドレス :FORM_TYPE_MAIL メールアドレスであるかをチェック
半角英数 :FORM_TYPE_HAN_ABC_NUM 半角の英数字のみ許可、「-」ハイフンは拒否
半角数字 :FORM_TYPE_HAN_NUM 半角の数字のみ許可、「-」ハイフンは拒否 ※最小値/最大値のチェックが可能
半角数字 :FORM_TYPE_HAN 半角の英数字記号および半角スペースを許可
電話番号 :FORM_TYPE_TEL 半角の0-9の数字および記号「-/()」を許可
郵便番号 :FORM_TYPE_POSTCODE 半角の0-9の数字および記号「-」を許可
全角カナ :FORM_TYPE_ZEN_KANA 全角カナと「ー」のみ許可
配列 :FORM_TYPE_ARRAY checkbox(チェックボックス)に使用 ※最小値/最大値のチェックが可能
文字列と配列は値チェックしません。
text,textarea,radio,selectは配列以外を使用すること。
checkboxは必ず、配列型を使用すること。
また、htmlのタグ記述ではフォーム名称を配列表現とすること。例:test7[]
最小値/最大値は半角数字:FORM_TYPE_HAN_NUMとチェックボックス:FORM_TYPE_ARRAYで
評価されます。使用しない場合は引数を書かない、もしくはfalseを渡すこと。
どちらか一方のみfalseでも対応します。
*/
/*
■
■メール関連設定
■
*/
//送信者メールアドレス(フォーム名指定)
if (isset($_REQUEST['email1'])) {
$sender_mailaddress = $_REQUEST['email1'];
}
//送信者名
//$sender_name = $_REQUEST['name'];
//管理者メールアドレス
$admin_mailaddress = 'info@fp-wanted.com';
/*
■送信者宛メール設定
*/
//Fromメールアドレス
$sender_from_mailaddress = 'info@fp-wanted.com';
//From名称
$sender_from_name = 'FP WANTED!';
//件名
$sender_mail_subject = "FP WANTED! 掲載のお問い合わせ";
//本文
$sender_mail_header = "お問い合わせありがとうございます。
下記の内容で掲載のお問い合わせを受け付けました。本メールは記録用として保管ください。
折り返し担当からご連絡差し上げます。
※申し訳ございませんが、本メールアドレスへの返信はお受けしておりません。
";
$sender_mail_footer = "
";
/*
■管理者宛メール設定
*/
//Fromメールアドレス
$admin_from_mailaddress = 'info@fp-wanted.com';
//From名称
$admin_from_name = 'FP WANTED!';
//件名
$admin_mail_subject = "FP WANTED! 掲載のお問い合わせ";
//本文
$admin_mail_header = "掲載のお問い合わせを受け付けました。
";
$admin_mail_footer = "
";
//送信者宛メール送信フラグ
$sender_mail_flg = true;
//管理者宛メール送信フラグ
$admin_mail_flg = true;
/*
■
■csv関連設定
■
*/
//CSV作成フラグ
$csv_flg = false;
//CSV格納フォルダ
$csv_dir = 'csv/';
//フォーム毎にディレクトリを分ける
$dir_form_name = false;
//ファイルネームにフォーム名を付ける
$csv_form_name = true;
/*
■
■その他設定
■
*/
//CSSクラス(テーブルデザイン)
define('DEF_CSS_ROW', 'row'); //必須でない
define('DEF_CSS_REQ', 'req'); //必須
define('DEF_CSS_ERR', 'err'); //エラー
//時差設定
$add_hour = 0;
//完了処理
if (isset($_POST['cfm'])) {
//CSV作成処理
if ($csv_flg) {
//日付取得
$today = getdate(time() + $add_hour * 60 * 60);
$year = $today['year'];
$mon = $today['mon'];
$send_date = date("Y-m-d H:i:s", time() + $add_hour * 60 * 60);
$dir = $csv_dir;
if ($dir_form_name !== false) {
//ディレクトリ作成
if (!is_dir($csv_dir . DEF_FORM_NAME)) {
mkdir($csv_dir . DEF_FORM_NAME, 0777);
// chmod($csv_dir, 0777);
}
$dir = $csv_dir . DEF_FORM_NAME . '/';
}
$fname = $dir . $year . sprintf("%02d", $mon) . ".csv";
if ($csv_form_name !== false) {
$fname = $dir . DEF_FORM_NAME . '_' . $year . sprintf("%02d", $mon) . ".csv";
}
if (file_exists($fname)) {
$fp = fopen($fname, "a");
//排他ロック
$cnt = 0;
while (flock($fp, LOCK_EX) === false) {
if ($cnt++ >= 5) {
//失敗
fclose($fp);
exit;
}
usleep(200);
}
} else {
$fp = fopen($fname, "w");
//排他ロック
$cnt = 0;
while (flock($fp, LOCK_EX) === false) {
if ($cnt++ >= 5) {
//失敗
fclose($fp);
exit;
}
usleep(200);
}
//ヘッダー出力
$line = "";
foreach ($FORM_LIST as $form) {
//ラベルは出力なし
if ($form->name === false) continue;
$line .= '"' . $form->longname . '",';
}
$line = $line . "\"送信日時\"\r\n";
fputs($fp, $line);
}
//出力
$line = "";
foreach ($FORM_LIST as $form) {
//ラベルは出力なし
if ($form->name === false) continue;
if (!isset($_REQUEST[$form->name])) {
$line .= '"",';
continue;
}
if ($form->type == FORM_TYPE_ARRAY) {
$temp = "";
for ($i = 0; $i < count($_REQUEST[$form->name]); $i++) {
$temp .= $_REQUEST[$form->name][$i];
if ($i < count($_REQUEST[$form->name]) - 1) $temp .= ',';
}
$line .= '"' . $temp . '",';
} else {
$line .= '"' . $_REQUEST[$form->name] . '",';
}
}
$line = $line . '"' . $send_date . "\"\r\n";
fputs($fp, $line);
//ロック解除
flock($fp, LOCK_UN);
}
//メール送信処理
$mail_body = "";
foreach ($FORM_LIST as $form) {
//ラベル
if ($form->name === false) {
$mail_body .= $form->longname . "\r\n";
continue;
}
if (!isset($_REQUEST[$form->name])) {
$mail_body .= $form->longname . ':r\n';
continue;
}
if ($form->type == FORM_TYPE_ARRAY) {
$temp = "";
for ($i = 0; $i < count($_REQUEST[$form->name]); $i++) {
$temp .= $_REQUEST[$form->name][$i];
if ($i < count($_REQUEST[$form->name]) - 1) $temp .= ',';
}
$mail_body .= $form->longname . ':' . $temp . "\r\n";
} else {
$mail_body .= $form->longname . ':' . $_REQUEST[$form->name] . "\r\n";
}
}
//2008.8.3 追加 バックスラッシュ除去
$mail_body = stripslashes($mail_body);
//文字コード変換
mb_language("ja");
mb_internal_encoding("UTF-8");
// $mail_subject = mb_encode_mimeheader($mail_subject);
// $from_name = mb_encode_mimeheader($from_name);
//$mail_subject = $mail_subject;
//$from_name = $from_name;
//管理者宛
if ($admin_mail_flg) {
$header = "From:\"$admin_from_name\" <$admin_from_mailaddress>\r\n";
$temp_mail_body = $admin_mail_header . $mail_body . $admin_mail_footer;
mb_send_mail($admin_mailaddress, $admin_mail_subject, $temp_mail_body, $header);
}
//送信者宛
if ($sender_mail_flg) {
$header = "From:\"$sender_from_name\" <$sender_from_mailaddress>\r\n";
$temp_mail_body = $sender_mail_header . $mail_body . $sender_mail_footer;
mb_send_mail($sender_mailaddress, $sender_mail_subject, $temp_mail_body, $header);
}
}
//エラー情報
$err = false;
//条件分岐
if (isset($_REQUEST['area']) && $_REQUEST['area'] == "その他") {
chg_req_flg('area_others', true);
}
if (isset($_REQUEST['survey_2']) && $_REQUEST['survey_2'] == "その他") {
chg_req_flg('survey_2others', true);
}
if (isset($_REQUEST['survey_7']) && $_REQUEST['survey_7'] == "今回登録する") {
chg_req_flg('enews_format', true);
}
if (isset($_REQUEST['is_fbmember']) && $_REQUEST['is_fbmember'] == "はい") {
chg_req_flg('idfb', true);
}
//値チェック
$pre_value = checkValue($FORM_LIST);
//フォーム画面(初期)
if (!isset($_REQUEST['form_name'])) {
require_once(DEF_PAGE_FORM);
} else if (!$err) {
//確認画面
if (!isset($_REQUEST['cfm'])) {
require_once(DEF_PAGE_CONFIRM);
//完了画面
} else {
require_once(DEF_PAGE_COMPLETE);
}
//フォーム画面(エラー)
} else {
require_once(DEF_PAGE_FORM);
}