................................................................. ................................................................. .%%%%%%..%%%%%%..%%%%%....%%%%...%%...%%...%%%%...%%%%%%..%%..... ....%%...%%......%%..%%..%%..%%..%%%.%%%..%%..%%....%%....%%..... ...%%....%%%%....%%%%%...%%..%%..%%.%.%%..%%%%%%....%%....%%..... ..%%.....%%......%%..%%..%%..%%..%%...%%..%%..%%....%%....%%..... .%%%%%%..%%%%%%..%%..%%...%%%%...%%...%%..%%..%%..%%%%%%..%%%%%%. ................................................................. @version 1.4.7 @copyright Copyright (c) Tenderfeel @link http://zeromail.webtecnote.com/ @license GPL v3 License ------------------------------------------------------------------ 出力文字コードUTF-8。メールエンコードISO-2022-JP or UTF-8。 UTF-8以外にする場合は、文字コード設定を変更すること。 PHPバージョン4.3.0以下だとエラーが出るかもしれない。 PHPのmail()関数が使えないとメール送信できない。 PHP5.0.0以上での使用を推奨。 ★文字コードについて メールとテンプレートページの文字コードは別設定です。 メールの文字コードを'ja'にすると日本国内向けに、 'uni'にすると海外・マルチバイト文字対応となります。 ガラケーへ送信される可能性がある場合は'ja'にしてください。 ★フォーム要素のname属性について 値には半角英数とハイフンが使用できます。 アンダーバーはオプションで用いるので使用できません。 ★管理者宛のメールタイトルと自動返信用コメントのタグ置換(ver1.4.5) 「inputのnameとその名称設定」にあるname値を{}で括ったタグを 管理者宛メールタイトルと自動返信用コメントの設定内で使用すると、 メール送信時に送信者が入力した値に置換されます。 例:{name}さんから問い合わせがありました。→あああさんから問い合わせがありました。 ★予約されているname値 下記name値は状態に関係なくチェックする。 文字列が含まれていればちょっと違っても有効(name2など) name="name" ----- 名前(必須入力にするかどうか、日本語の有無) name="message" -- メッセージ(文字総数、禁止語句、日本語の有無) name="email" ---- メールアドレス(必須。文型チェックと使用文字制限) name="tel" ------ 電話番号(半角数字とハイフンの組み合わせ) name="url" ------ URL(http://から始まる文字列。文型チェック) name="zipcode" -- 郵便番号(半角数字とハイフンで8文字) name="reply" ---- 自動返信するかどうか ※自動返信はこのファイルでtrueにした場合、name値の有無関係なく返信する。 このファイルでtrueにせず、name="reply"のフォームを設置すると 入力者の希望で自動返信するようになる。 ○チェックボックスはnameの値末尾に[]をつけること。   ★条件設定 name値の後ろにアンダーバーでオプション値を付ける事で 対応したチェックと変換を行う。 複数同時につける場合は後ろに繋げる。 name="hoge_req" _reqで必須入力にする※ name="hoge_num" _numで数字入力とスペースのみ許可(全角は半角に変更) name="hoge_eng" _engで半角英数とスペースのみ許可(全角は半角に変更) name="hoge_jpz" _jpzで全角に自動変換 name="hoge_jpk" _jpkでカタカナとスペースのみ許可 name="hoge_jph" _jphでひらがなとスペースのみ許可 name="hoge_jpa" _jpaでひらがなorカタカナとスペースのみ許可 ※チェックボックス・ファイルフィールド等の必須入力指定はhiddenフィールドで行う ★出力整形(v1.4) いくつかのフォーム入力内容を1つにまとめたい場合は、 非表示フィールドでrep[name値]を利用します。 上記例の場合「inputのnameとその名称設定($inputs)」で"birth"=>"誕生日"とすると year・month・dayというname値を持つフォームの値が置換されるので 確認画面やメール本文では「2000年6月24日」と表示されます。 ★2つの入力内容が同一かチェックする(v1.4.5) フォームに入力された内容が同じか確認する場合は、 非表示フィールドでmatchを利用します。 確認したい入力フォームのnameを+で繋ぐと、後ろに記入されたものが前のものと一致するか調べます。 複数項目がある場合はカンマで分けてください。 確認する項目(後ろ)のnameをinit.phpの「inputのnameとその名称設定」に追加する必要はありません。  ★基本ファイル構成 zeromail.php 本体 init.php 設定ファイル confim.php 確認画面出力用 zeromail.css スタイルシート contact.html 入力画面 check.php 確認画面 completion.html 送信完了画面 ※入力・確認・送信完了は別ディレクトリでも動作する。  ●確認画面(check.php)について 先頭に必ずconfim.phpを呼び出すrequire_once()を記述する。 確認を表示するConfDisp();と、ボタンを表示するButton();をform内に記述する。 actionはzeromail.phpにする。 必要に応じて各テンプレートを変更する。  ★複数設置について   メールフォームの複数設置は、次の手順で可能。 1.2つ目以降のフォームにを追加  name="id"でvalueがフォームのIDになる。IDは半角英数、ハイフン、アンダーバーのみ有効。   2.init.phpを複製する。 3.複製したinit.phpにnameと同じidを付け足す。(init2.php) 4.基本設定を変更する  ★未入力項目の送信スキップ(v1.4.6)   通常は設定された項目について入力されていなくても確認画面やメール内で項目が表示されますが   ZM_EMPTY_VALUE_SKIPをtrueにすると、入力されていない項目の表示をスキップすることが出来ます。  ************************************************************** ★ファイル添付機能   ○一時保存ディレクトリの作成 添付ファイルとしてアップロードされたファイルを一時的に保存するディレクトリが必要です。 添付ファイル機能を使用する場合には必ず作成してください。 ○入力フォーム 添付ファイル機能を使う場合はエンコードタイプの指定が必須になります。 fileタグのenctype属性をmultipart/form-dataにしてください。 ○送信を許可するファイルタイプの拡張 zeromail.phpのcheck_minetype関数内にある$minetypeと$extにそれぞれ MIMEタイプと拡張子を追加することで設定されていないファイルタイプを許可できます。 ○必須入力設定(v1.4) チェックボックスと同じくhiddenのrequireで指定すると、空送信でエラーが出るようになります。 ☆利用上の注意: 一時保存ディレクトリには内容確認画面を表示した時点でファイルが保存されます。 下記保存設定をしていない場合は内容確認時とメール送信時に一括削除されますが、 内容確認→戻る→ウィンドウを閉じるか別ページに移動 という行動をした場合はファイルが削除されません。 削除されなかったファイルが溜まるとサーバー容量を圧迫するので、 定期的にディレクトリ内を確認&掃除してください。 ●ファイルの保存(v1.4) FILEPOOLをtrueにすると、添付ファイルが全て指定ディレクトリ内に保存され メールには一切添付されなくなります。 管理機能をONにしている場合は、管理パネルからファイルの削除や一括ダウンロードが出来ます。 ************************************************************** ★Ajaxへの対応について ★ファイル構成 mootools-1.2.4-core.js MooToolsのコアファイル mootools-formpack.js Form.Validator、Form.Requestほか色々 zeromail-ajax.js 動作に関する設定とソース POSTされるデータの中にnoscript=false(文字列)があるとAjaxによる通信とみなし 確認画面や完了画面にリダイレクトを行わずに結果をprint出力します。 noscript=trueもしくはPOSTされるデータの中にnoscriptというキーが含まれていない場合は Ajaxを利用していても通常動作と同じくページ遷移を行います。 ●確認画面の表示(v1.4) POSTされるデータの中にconfim=trueがあるとPHP版のような確認画面が表示されます。 確認画面のボタンを押した際に再び同じフォーム内容を送信することになりますが、 送信データにmode=Sendという値を追加してください。 *************************************************************** ★管理画面機能 init_admin.phpを管理機能を使用したいinit.phpに読み込ませるか、 設定部分をコピペしてZM_ADMINをtrueにすると有効になります。 require('admin/init_admin.php'); //管理画面機能 フォームを複数設置している場合、logファイルを複数設置すれば 個別に管理画面を用意することができます。 デフォルトではディレクトリがadminになっていますが、この名前は変更出来ます。 (ファイル名は内部でindex.phpに固定してあるので変更しないでください) ○ログファイル デフォルトではlog.phpがadminディレクトリ下にありますが、 adminディレクトリ外に置く場合はZM_ROOTOUTをtureにして、 LOGFILEPASSにはrootからの絶対パスを設定してください。 ZM_ROOTOUTがfalseの場合は、adminディレクトリ下にあるものとして動くので、 LOGFILEPASSにはファイル名のみ設定してください。 パーミッションは644でも動作しますが600(suEXEC)・606などを推奨します。 ○テンプレート(template.php) 自由に改変できます。以下は各変数に出力されるもの $logout … ログアウトボタン  $page_title … ページタイトル $message … エラーメッセージなど $table … 一覧などのテーブル $sidebar … ナビゲーション ---CHANGE LOG---------------------------------------------------- var1.4.7b->1.4.7 [Ajax] MooTools Core 1.3.1に対応 var1.4.7a->1.4.7b [new] マルチバイト文字への対応(+uni) var1.4.6->1.4.7a [new] 未入力項目の表示スキップ (定数ZM_EMPTY_VALUE_SKIP追加) var1.4.5->1.4.6 [fix] ルートディレクトリ定数名変更(Adminも) [fix] init.phpをルート以下から読み込むように変更 [fix] 本文のリンク記述許可数設定の変数が反映されてなかった [Admin] ログファイルがない場合のエラーメッセージ表示 [fix] 添付ファイルのエンコード後にchunk_split [fix] _req使用時にエラーメッセージが出ないバグの修正 var1.4.4->1.4.5 [fix]id使用可能な文字列追加+チェック厳密化 [Admin]log.php 300kb超過警告 [Admin]Downloadロジック変更 [Admin]ログイン画面のid項目 [Admin]フォームセレクトメニュー [fix]initファイルがない場合の例外処理 [fix]SJIS,EUCの文字化け修正 [fix]SJIS,EUCの正規表現チェック修正 [fix]ファイル添付エラーメッセージエンコード変換抜け [new]自動返信用コメントのタグ置換 var1.4.3->1.4.4 [new]matchコマンド(2つの入力内容が同一かチェック) var1.4.2->1.4.3 [fix]Ajaxにもrep [fix]initのロードをrequireに [fix]Ajax zipcode-btnと-autoを分離 var1.4->1.4.2 [new]管理者宛メール件名のタグ置換   [fix]アンダーバーの入力条件設定にスペースを許可   [fix]日本語ファイル名チェックの正規表現変更   [new]init.phpの解説をCHANGELOG.txtに移す var1.3->1.4 管理画面機能追加(ログ保存/新定数) 添付ファイル名に関する修正(basenameとか) FILEPOOL(添付ファイル温存)設定追加 MIMEタイプ追加・確認ロジック修正 hiddenのrequireを$_FILESにも適用 メッセージに付与されるクラス名とタグ統一 zeromail_regtag_replaceをinitに移す 管理画面機能の状態確認を関数化(is_admin) VIEWSTYLEのdefaultソースにクラス付与 エラーページのファイル名を定数化(ERRORPAGE) デフォルトテンプレートの修正(クラス・ID名の整理とCSSスキン化) zeromail.phpのchangelogをテキストファイルに移す confim.phpをconfirm.phpに変更 Copyright出力関数追加 zeromail-ajax.jsに#resultへのスクロール追加 直接アクセス対策とエラー表示 var1.3->1.3.2.68 rep[name]設定と{name}タグによる置換 .69 Ajax確認画面(confim=true) var1.3->1.3.1 ラジオ・チェックボタン必須入力のバグ修正 var1.2->1.3 メール差出人フォーマット修正 メールヘッダの調整 メールヘッダ文字エンコード修正 画像一時保存フォルダのURIを絶対パス化 var1.1->1.2.1 radio,checkbox 必須入力バグ修正 var1.1->1.2 Ajaxへの対応(ロジック書き換え+NOSCRIPT追加) メールアドレスを必須にするかどうかの設定(EMAILCHECK)追加 差出人名設定(FROMNAME)追加 ブロックするIPの設定($blockIP)追加 エラーでセッションを破棄するように変更 ユーザー情報にIP追加と並べ替え メールヘッダ変更(主にfrom) エラー表示をテンプレート化(error.php) Button()とMessage()をnoscript環境に対応させた 画像確認時のターゲット指定IMG_CHECK_TARGET追加 var1.1->1.1.1 入力チェック強化 平仮名・片仮名のチェック追加 メールアドレスを必須にするかどうかの設定(EMAILCHECK)追加 var1.0->1.1 ファイル添付に対応 自動返信name値"Reply"を削除 自動返信バグ修正 関数を外に出したり定数化したり var0.9->1.0 メールアドレスのチェックを細分化 var0.8->0.9 メール返信の条件ミス修正 var0.7->0.8 文字コード変換修正(confim.php) 予約済みname値のif条件 ローマ字の名前に対応(フラグALPHANAME追加) Message()で表示する文字にspanタグつけた var0.6->0.7 郵便番号をzipcodeにして正規表現にハイフンなし追加   電話番号の正規表現変更   自動返信のname値にreply追加 checkboxとradioの必須チェック追加 var0.5->0.6 指定エンコードへの変換を関数化 var0.4->0.5 UTF-8以外の文字コードに対応など var0.3->0.4 メアドチェック正規表現変更 var0.2->0.3 ケアレスミス修正+mb関連設定追加 ver0.1->0.2 複数設置対応 ------------------------------------------------------------------