-------------------------------------- メールフォーム ver.1.0 # Program Name:MailFormFor kiCMS ver1.0 # Creation:KIMIHIKO MORIYA (2012.07.01) -------------------------------------- ● 機能・仕様 ・ フォームをkiCMSにより編集 ・ System設定は設定ファイルにより編集 ・ フォームに入力した内容をメールで受信。 ・ 入力の確認画面付き。 ・ 入力必須項目をWebSmartにより自由に設定できます。 ・ 基本的な形式チェックをWebSmartにより自由に設定できます。 ・ メールアドレスなど確認用に繰り返し入力する項目をWebSmartにより自由に設定できます。 ・ 項目に入力された内容によりメール送信先を変更できます。 ・ 入力画面、確認・エラー画面・送信完了画面はHTMLでカスタマイズ可能。(WebSmartテンプレート方式) ・ 入力画面、確認・エラー・送信完了画面に出力される詳細なHTMLタグはテンプレートによりカスタマイズ可能(テンプレートは完全にPHPスクリプトの書式にのっとっています) ・ サンクスメールのタイトルや内容をWebSmartにより自由に編集できます。 ・ 管理者へのメールのタイトルや内容を設定ファイルにより自由に編集できます。 ・ 送信元メールアドレス(送信元見出し)、受信アドレスをWebSmartにより自由に編集できます。 ・ 送信した内容をCSVファイルに保存するかどうか設定できます。 ・ PHPのmb_sendmailが利用可能なサーバで使えます。 ・ 基本的なクロスサイト攻撃によるメールサーバー攻撃等の対策を行っております。 ・ 出力される文言の全てを設定可能 ・ Program Name:MailFormFor WebSmartのkiCMS版です。 ● 構成 ・inquiry.html メールフォームの入力画面のファイル。WebSmartのデザインを埋め込んだhtmlファイル(php) ・inquiryc.html メールフォームの確認・エラー画面のファイル。WebSmartのデザインを埋め込んだhtmlファイル(php) ・inquiry_thanks.html サンクス画面のファイル。WebSmartのデザインを埋め込んだhtmlファイル(php) ・readme.txt このファイル ・ws_mail.php プログラム本体 ・ws_mail_change_char.php 確実に文字化けする文字を変換する(開いて保存しないこと。変更していなくても文字エンコード、文字コードがおかしくなる) ・ws_mail_config.inc.php 設定ファイル ・ws_mail_confirm.html.php 詳細な確認画面のテンプレート(通常のPHPファイル。テンプレートエンジン等は使っていないPHPなのでHTML形式で記述できる) ・ws_mail_error.html.php 詳細なエラー画面のテンプレート(通常のPHPファイル。テンプレートエンジン等は使っていないPHPなのでHTML形式で記述できる) ・ws_mail_thanks.html.php 詳細なサンクス画面のテンプレート(通常のPHPファイル。テンプレートエンジン等は使っていないPHPなのでHTML形式で記述できる) ● 初期設定 ・ 「ws_mail_config.inc.php」をテキストエディタで開き、設置位置情報 の $CMSD_DIRを編集してください (相対パスでも絶対パスでもよい最後に「/」をつけないこと) ● デザイン ・ z-02.html(入力画面)はCMSDのデザイン組み込みが行われたファイルです。自由にデザインを変更してください。 ※このz-02.html内のjavascriptを削除、変更しないでください。 WebSmartではxslを使用しているため、空のtextareaタグが正しく出力されずtextarea移行のタグも正しく出力されません。 ※同じく、ブラウザの設定でjavascriptをOFFにして使用するとtextareaにデフォルト値として空白が入ります。 ・ z-02c.html(確認・エラー・終了画面)はCMSDのデザイン組み込みが行われたファイルです。自由にデザインを変更してください。 ・ PHPから出力されるそれぞれのタグを編集する際は下記を編集しますが、できるだけこのまま使用したほうが良いでしょう。 ※ファイルはPHPスクリプトファイルです。(で囲まれた部分以外はHTMLとして解釈されます。) ・確認画面:ws_mail_confirm.html.php ・エラー画面:ws_mail_error.html.php ・終了画面:ws_mail_thanks.html.php ・z-02.default.design.xslにより入力画面の細かな出力が変更できますが、複雑なのでいじらないほうが良いでしょう ● WebSmartの使い方 ・「ウィンドウタイトル・キーワード・ディスクリプション」はWebSmartのほかと同じ ・「リード」は入力画面の上部に出力されます。 ・「送信元メールアドレス」は必須で、サンクスメールのFromになります。 ・「送信元名」はサンクスメールのFromの見出しになります。(From: 送信元名のようになる) ・「受信メールアドレス一覧」は受信するメールアドレス(管理者のもの)を入力します。 ・「受信メールアドレス」は必須でメールアドレスを入力。 ・「項目」は任意の項目に任意の値が入った場合だけこのメールアドレスに送信する場合にその項目名を入力します。 ・「項目の値」は任意の項目に任意の値が入った場合だけこのメールアドレスに送信する場合にその項目の値を入力します。 (任意の項目に何も入力しなかった場合のみメールを送りたい場合はここは空にしておきます。) ※ここに入力する値が少しでも間違えているとうまく動作しません。 ※例えば、 入力者の入力した値に関係なく全て「all@mail_to.com」にメールを送り、別途、 「種別」の「個人」もしくは「法人」を選択した場合のみ「houjin_kojin@mail_to.com」にメールを送り、 「種別」の「その他」を選択した場合と「種別」が何も選択されなかった場合に「sonota@mail_to.com」にメールを送りたい場合は 一つ目の「受信メールアドレス(一覧)」の「受信メールアドレス」欄に"all@mail_to.com"と入力 同ページの「項目」欄は空白にしておく 二つ目の「受信メールアドレス(一覧)」の「受信メールアドレス」欄に"houjin_kojin@mail_to.com"と入力 同ページの「項目」欄に"種別"と入力 同ページの「項目の値一覧」の一つ目に"個人"と入力 同ページの「項目の値一覧」の二つ目に"法人"と入力 三つ目の「受信メールアドレス(一覧)」の「受信メールアドレス」欄に"sonota@mail_to.com"と入力 同ページの「項目」欄に"種別"と入力 同ページの「項目の値一覧」の一つ目に"その他"と入力 四つ目の「受信メールアドレス(一覧)」の「受信メールアドレス」欄に"sonota@mail_to.com"と入力 同ページの「項目」欄に"種別"と入力 同ページの「項目の値一覧」はなにもいじらない ・「項目一覧」では入力フォームを作成します。 ・「項目名」は見出し名とinputタグのname属性になります。 ・「種別」は入力エリアの形式を選択します。inputタグのtype属性になります。 ・「値一覧」は「種別」でラジオボタン、チェックボックスを選択した場合のみ入力します。 ※「種別」でラジオボタン、チェックボックスを選択したのにここに入力しなかった場合の動作は保証しません。 ・「値一覧」の「値」は 各ボックス横の見出しとinputタグのvalue属性になります。 ・「デフォルトでチェックをいれるかどうか」はデフォルトでチェックを入れるか選択できます。inputタグにchacked属性が追加されます。 ※ラジオボタンなのに複数の項目にチェックを入れた場合はチェックをいれた全てにchacked属性が追加されるので、動作はブラウザ次第となってしまいます。 ・「必須」は入力者に対し、入力を任意(自由入力)にするか必須にするか選択します。 必須にした場合必須チェックを行い、入力欄には「※」印がつきます。 ・「形式チェック」は形式チェックを行なわないか、または「メール形式」チェック、「半角、記号」チェック、「全角カナ」チェック、「半角数字」チェックを行うかの選択ができます。 メール形式チェック以外の形式チェックを選択した場合は、入力欄に(全角カタカナ)等の文言が追加されます。 ・「このメールアドレスにサンクスメールを送る」で「このアドレスに送る」を選択すると、この項目に入力された値をメールアドレスと解釈し、ここに入力された値にサンクスメールを送ります。 ※メールアドレス入力欄ではないのに「このアドレスに送る」を選択した場合や、形式チェックで「メール形式」チェックを選択していないのに「このアドレスに送る」を選択し、  メールアドレス以外の値が入力者によって入力されると、PHPはメールを送信しようとしますが、SMTPサーバーでエラーが返されます。 ・「再入力チェック」はメールアドレスなどを再度入力させ確認したい場合にどの項目と入力値を比較するか、比較する「項目名」を入力します。 ※この「項目名」に入力する値が少しでも間違えているとエラーが出続けます。(空白、記号などもまったく同じくする) ※ここに値を入力するとこの項目自体確認画面にも、メールにもCSVにも出力されません。同一チェックを行うのみです。 ・「この項目を確認画面やメールに表示しない」を「表示しない」を選択すると、確認画面にも、メールにもCSVにも出力されません。 ※同意するチェック等に使用してください。 ・「サンクスメールタイトル」はサンクスメールのタイトルを入力します。 ・「サンクスメール内容」はサンクスメールの内容を入力します。 <{input_list}>と書くと入力内容に置き換えられます。(<{項目名}>も使える) ● 注意 ・ws_mail_change_char.phpは開かないこと 開いても絶対に保存しないこと 文字エンコードが特殊になっています。 文字エンコードに弱いエディターで開くと正しく保存できません。 ● その他の設定(基本的には変更しません) ・$MAIL_SUBJECT 管理者へのメールタイトル ・$MAIL_BODY 管理者へのメール内容 <{input_list}>と書くと入力内容に置き換えられる(<{項目名}>も使える) ・$REPLY サンクスメールを送るか(true、false) ・$REPLY_TOADMIN サンクスメールを確認のため管理者にも送るか(true、false) ・$SOCKT ソケットで送る場合true、falseの場合はsendmail (true、false) ・$HOSTS ソケットで送る場合のホストを記入array();内にホストそれぞれを""で囲って記入。複数ある場合は、送りたい順位の高い順に「,」で区切って入力 ソケットで送る場合でホストを設定しない場合は$MAIL_SENDERと$MAIL_TOから使えるものを自動検索 array("test.jp","mail.test.jp","smtp.test.jp"); ・$CSV_OUT CSVを出力するか(true、false) ・$CSV_DIR CSVを出力する場合、出力するディレクトリ(パーミッションは777にすること。現存するディレクトリであること。相対パスでも絶対パスでも良い) ・$CSV_NAME CSVを出力する場合、出力するファイル名を指定 空白なら日付毎にファイル名をつけ保存(ひとつのファイルに出力し続けると、ファイルや動作が重くなるのでこちらを推奨) ・$CONFIRM_PAGE 確認画面テンプレートの位置を指定 ・$THANKS_PAGE 最後の画面テンプレートの位置を指定 ・$ERROR_PAGE エラー画面テンプレートの位置を指定 ・$EMPTY_NO_EXIST 入力値が空の場合は確認画面やメールに表示しない。(true、false) ・$MULTI_COMBIN_STR 複数選択のときの結合文字 「\n」は改行 (チェックボックスで複数選択された場合の確認画面での結合文字) ・エラーチェックに引っかかった場合の出力文言 ※<{name}>には「項目名」が入る ※<{name2}>がある場合、<{name2}>には「項目名」が入り、<{name}>には比較もとの「項目名」が入る ※<{limit}>は文字数制限が入る $MESSAGE = array( "NECESSARY" => "「<{name}>」の項目を入力してください。", ←必須チェックに引っかかった場合 "KANA" => "<{name}>は全角カタカナで入力してください。", ←全角カナチェックに引っかかった場合 "HANKAKU" => "<{name}>は半角英数で入力してください。", ←半角チェックに引っかかった場合 "SUJI" => "<{name}>は数字で入力してください。", ←半角数字チェックに引っかかった場合 "MAIL" => "<{name}>の形式が間違っています。", ←メール形式チェックに引っかかった場合 "SAME" => "「<{name}>」と「<{name2}>」が一致しません。", ←再入力チェックに引っかかった場合 "LIMIT" => "「<{name}>」の項目は<{limit}>文字以内で入力してください。", ←文字数制限チェックに引っかかった場合 "NOVALUE" => "「<{name}>」の項目の入力が間違えています。" ←何らかの攻撃により、ラジオボタン、チェックボックスには無い値が送信された場合 ); ・$TEXT_LETTERS_MAX 入力文字数制限(テキストボックス) 設定値を含む(以内) 半角全角は関係ない ・$TEXTAREA_LETTERS_MAX 入力文字数制限(テキストエリア) 設定値を含む(以内) 半角全角は関係ない ・サンクス画面文言 $SEND_ERROR_STR ←エラー時 $SEND_OK_STR ←成功時 ・画面遷移異常時のエラー文言 $BAT_DISPLAY_MESSAGE ←リロードエラー $BAT_REQUEST_MESSAGE ←クロスサイト攻撃エラーと思われるエラー ・$ENCOD 文字エンコード(PHPで指定された書式で書くこと) ・$ADD_PRE_STR 任意の項目の入力値の直前に文字を入れる(配列、キーに、name属性、値につけるタグを入力) ・$ADD_AFTER_STR 任意の項目の入力値の直後に文字を入れる(配列、キーに、name属性、値につけるタグを入力) ● CMSDデータ・スキーマの設定 ・$_KI_DATA_DIR_ CMSDデータディレクトリ ・$_KI_FILE_PREFIX_ CMSDスキーマ名 ・$_EID CMSDのフォームのID ・以下スキーマのdata名 $MAIL_FROM_DATA ←送信元メールアドレス $MAIL_FROM_NAME_DATA = "mailFromName"; ←メールFromの見出し $MAIL_TO_LIST = "mailToList"; ←受信メールアドレス一覧 $MAIL_TO_DATA = "mailTo"; ←受信メールアドレス $MAIL_TO_BY_ITEM_DATA = "mailToByItem"; ←受信メールアドレスの任意の項目に任意の値が入った場合だけ送信する場合の項目 $MAIL_TO_BY_LIST = "mailToByList"; ←受信メールアドレスの任意の項目に任意の値が入った場合だけ送信する場合の項目の値一覧 $MAIL_TO_BY_DATA = "mailToByVal"; ←受信メールアドレスの任意の項目に任意の値が入った場合だけ送信する場合の項目の値 $MAIL_CC_LIST = "mailCcList"; ←受信メールCCアドレス一覧(未使用) $MAIL_CC_DATA = "mailCc"; ←受信メールCCアドレス(未使用) $REMAIL_CONT_DATA = "remailContents"; ←サンクスメール内容 $REMAIL_TITLE_DATA = "remailTitle"; ←サンクスメールタイトル $WS_ITEM_LIST = "itemList"; ←項目一覧 $WS_ITEM_DATA = "itemName"; ←入力項目の項目名 $WS_ITEM_RADIO_LIST = "radioList"; ←入力項目の値一覧 $WS_ITEM_RADIO_DATA = "radioVal"; ←入力項目の値 $WS_ITEM_THANKS_MAIL = "itemThanksMail"; ←入力項目のこのメールアドレスにサンクスメールを送る $WS_ITEM_NECESSARY = "itemNecessary"; ←入力項目の必須 $WS_ITEM_FORMAT = "itemFormat"; ←入力項目の形式チェック $WS_ITEM_KIND = "itemKind"; ←入力項目の種別 $WS_NO_DISPLAY_DATA = "itemNoDisplay"; ←入力項目のこの項目を確認画面やメールに表示しない $WS_SAME_ITEM_DATA = "itemSame"; ←入力項目の再入力チェック ・$WS_LIST_KEY = "listitem"; ・xmlでのデータのリスト名