PHP工房トップ

HOME > 【MailForm03】多機能メールフォーム(CSV保存付き)

【MailForm03】PHP多機能メールフォーム CSV保存付き(有料版)

CSV保存

フリーのPHP多機能メールフォームにCSVデータ保存機能を追加したプログラムです。メール送信と同時にサーバー上に送信データを保存します。CSVファイルはExcel、その他エディタソフトなどで開けます。

アンケートやプレゼント応募、キャンペーン申し込み、求人のエントリーなど大量の集計を行いたい場合や、
メール受信の障害等に備え、バックアップを取っておきたいなどの場合に適しています。

ただし、個人情報をサーバー上に保存する形になりますので、保存ファイルの取扱には注意が必要です。
デフォルトではhtaccessにより保存CSVファイルへは直接アクセスできないように設定しています。
CSVファイルのセキュリティ対策、セッション認証法についてはこちらをご参考ください

料金とお支払い方法について

MailForm03 多機能メールフォーム(CSV保存付き)
プログラム料金 2,000円(税込)

↓より全機能搭載版をご購入ください。

有料版プログラムの統合について ※重要
これまでの有料版は各機能ごとにメールフォームプログラムを販売していましたが、プログラム管理の合理性、メンテナンス性、及びご購入いただく方の利便性などを考慮し、シンプルにフリー版と有料版の全機能が付いた全機能搭載版の2つのプログラムとしました。
尚、有料版のある1つの機能しか使わないという方がおられることなども考慮し、
全機能搭載版のプログラム本体料金を4,000円→2,000円に値下げいたしました。
何卒ご理解の程お願い申し上げます。

お手数おかけいたしますが、以下全機能搭載版のページよりお申し込み下さいますようお願い申し上げます。

主な機能と特徴、設置法、ご利用について

基本機能、特徴、設置法、その他すべて無料版の多機能メールフォームと同じになりますので、設置の際などはそちらをご覧ください。

CSVダウンロード用URLについて

「サイトURL/mail.php?mode=download」と指定して下さい。ログイン画面が出ればOKです。
設定ファイルで指定したID、パスワードを指定して認証してください。CSVダウンロードダイアログが出るはずです。
ファイル名はその時の年月日時分.csvで出力されます。
デフォルでは「OFF」です。認証によるダウンロードを利用する場合はONに設定下さい。ID、パスワードはデフォルト値が指定されていますので必ず変更して下さい。(いずれもmail.phpにて変更可能です)
クライアントにこのURLとID、パスワードを伝えればダウンロード可能になります。
もちろんFTPソフトで直接ダウンロードも可能です。その場合はこの機能をOFFにして下さい。

CSV生成について

初回のメール送信時にdataフォルダ内に「data.csv」が生成されます。同時にCSVファイルの1行目に現在のフォーム全項目名が追加され、2行目に送信データが追加されます。この1行目の項目名追加は初回送信時のファイル生成時のみ追加されます。その後は3行目、4行目・・・と送信のたびに送信データが追加されていきます。

【重要】 フォームにチェックボックス、またはラジオボタンがある場合で、かつ必須ではない場合、未選択のまま送信できてしまいますが、そうするとCSVデータの列がずれます。(登録データには影響ありません)
※チェックボックス、ラジオボタンは未選択の場合、空データのPOSTすらされないためです。

チェックボックス、ラジオボタンがある場合で、かつ必須ではない場合、列ズレを防ぐためmail.phpのオプション設定で「CSVに保存する項目を指定する」でCSVに保存したい項目すべてのname属性の値を指定して下さい。
こうすれば1行目にここで指定した項目がヘッダとして記述され、さらに未選択の場合には空データが挿入されますので列ズレも発生しません。

または隠し要素(ダミー要素)を埋め込んでおくということでも対処は可能です。

隠し要素(ダミー要素)の記述例(赤字が追加する要素です)

ラジオボタンの場合
<input type="hidden" name="性別" />
<input type="radio" name="性別" value="男" />男
<input type="radio" name="性別" value="女" />女

チェックボックスの場合
<input type="hidden" name="サイトを知ったきっかけ" />
<input type="checkbox" name="サイトを知ったきっかけ[]" value="インターネット" />インターネット
<input type="checkbox" name="サイトを知ったきっかけ[]" value="広告" />広告

このようにtype="hidden"の隠し要素を直前に記述しておくことで未選択の場合でも項目が送信されます。
チェックされた場合には、そちらが優先(上書き)されますので問題ありません。

途中で項目名が変わる、または増減するなど項目に変更があった場合には、再度設定の上、既存のCSVファイルを削除、またはリネームし、CSVを新たに生成して下さい。

データをリセット、またはやり直したい場合にはサーバー上のdata.csvファイルを削除すればOKです。初回送信時に自動生成されます。

オプション設定について

ファイル内に以下の記述が追加されていますので、コメントを参考に設定等をお願いします。
様々な要件に対応できるよう細かい設定が可能です。
※以下PHPファイル内ではスラッシュ2つ「//」以降その行の終わりまでコメント扱いになります。

//----------------------------------------------------------------------
// CSV保存用設定 (START)
//----------------------------------------------------------------------

//初回送信時(ファイル生成時)にフォームの各項目名をフォームページの順番で1行目に書き込みます。
//※注意 フォームにチェックボックス、ラジオボタンがある場合、
//初回送信時に必ずチェックを入れて送信して下さい。怠ると1行目にその項目は追加されません。 //2回目以降でチェックボックス、ラジオボタンが未選択の場合、送信データの列がずれることがありますが、
//登録データには影響ありません。 //データをリセット、またはやり直したい場合にはサーバー上のdata.csvファイルを削除すればOKです。 //CSVに保存する(する=1, しない=0) 
//※「する」場合、dataフォルダを書き込み可能なパーミッション(777等※サーバによる)に変更ください。 $csv_backup = 1; //CSV保存先ディレクトリ(書き込み可能なパーミッション(777等※サーバによる)に変更ください) $csv_dir = "data/"; //CSV保存ファイル名 $csv_filename = "data.csv"; //CSVファイルパス(変更禁止) $csv_file_path = $csv_dir.$csv_filename; //各データの先頭に「0」が含まれていたら「"」の前に「=」を追記する(する=1, しない=0) //エクセルで先頭の0(特に電話番号で)が消える問題対策 ※CSVをその他のソフト等で扱う場合は「0」にしてください。 $csv_data_esc = 1; //CSVに保存する項目を指定する(保存したい項目のname属性の値を指定してください) ※デフォルトは全項目を保存します //値はシングルクォーテーションで囲み、複数の場合はカンマで区切ってください //記述例 $regData = array('お名前','Email','電話番号'); $regData = array(); //CSVダウンロードにセッション(ログイン)認証を利用する(する=1, しない=0) //自身でBasic認証などを使用したい場合は「しない」にしてください。 $session_auth = 1; //上記で認証を利用する場合の認証用ID、パスワード (重要)必ず変更して下さい! //半角英数字(なるべく複雑でかつ11文字以上で指定してください) $userid = 'admin'; // ユーザーID $password = '1234'; // パスワード //---------------------------------------------------------------------- // CSV保存用設定 (END) //----------------------------------------------------------------------

※data.csv のパーミッションはサーバー側で生成された場合は基本的に変更不要ですが、サーバーを移転するなどで、data.csvを新たにアップロードする場合などは書き込み可能な「666」等に設定して下さい。

サンプルデモ

※実際のダウンロード画面になります。
ユーザID:admin
パスワード:1397
ファイル名はその時の年月日時分.csvで出力されます。
動作サンプルはありません。見た目、動作は無料版メールフォームとなんら変わりませんので。
サンプルは実際に生成されたCSVファイルです。ExcelがインストールされていればExcelで開くことができます。
Excelがインストールされていない場合は、「OpenOffice」、またはTerapadなどのフリーのエディタ等で開けます。

動作確認済PHPバージョン

PHP4.3.9~PHP8.1

動作確認済レンタルサーバー

  • エックスサーバー [PR]
    ※個人的にはここが好きで、もうずっとここです。このサーバーで困ることはまずないでしょう。
  • ロリポップ! [PR]
    ※ただしここはWAF機能がONの場合、CMSプログラムで問題が発生する可能性が高いです。詳細はこちら
    またサーバーがブラックリストに登録されてしまいメール系のプログラムで受信できない大問題も多々確認されています。詳細はこちら
     ただコスパ的には有りだと思います。
  • カゴヤのレンタルサーバー [PR]
    ここは高機能、高スペック、良心的な価格でありながら風俗系のサイトがOKという非常に貴重なサーバーです。個人的には風俗系のサイトであればこのサーバー以外の選択肢はないと思ってます。
  • さくらのレンタルサーバ [PR]

その他一般的なレンタルサーバーであれば問題なく動作するはずですが、
すべての環境(サーバー)での動作を保証するものではありませんのでご了承下さい。

問題が出る可能性が高い、またはそのままでは必ず問題が出ることが分かっているサーバー

※現状私自身が把握している範囲です。(実際に確認していますのでちゃんと根拠もあります)
1,Yahoo系(ジオプラス、ウェブホスティングとも)※Softbankも含む
2,KDDI系(CPI含む)
3,NTT系(WebArena(suiteX)、NTTビズリンク(BizLink))
※プロバイダー系は特に問題が多いです。(個人的には絶対に借りてはいけないと考えています)
4,スマイルサーバー
5,ファーストサーバ

特にCPI、NTT系、スマイルサーバー、ファーストサーバで問題がある場合はこちらも参照下さい

経験上、結局は「餅は餅屋です」。プロバイダー系はプラン、金額に関係なく特に問題が多いです。サーバーの問題で時間を取られるのは非常に無駄ですし、その先ずっと影響しますのでサーバー選びは慎重にされることをオススメします。 特に理由がなければあえてこれらのサーバーは借りないほうが得策でしょう。高いから良い、安いからダメという安易なものでもありませんので難しいところですね。(まぁ安いには安いなりの理由があるのですが・・)

よくある質問と対処法など

メール送信不具合関連

確認画面での不具合関連

文字化けや誤変換関連

その他(カスタマイズ方法や対処法含む)

よくある質問(CSV保存版独自)

ご利用規約

・無料版プログラムはフリーウェアです。ただし、著作権は放棄するものではありません。
・プログラムの著作権表示リンク(ページ下部にある当サイトへのリンク)を無断で削除することはできません。
(一律2,000円+消費税の削除依頼をいただいた場合を除く)
・プログラムの再配布、再販売は禁止です。
 ※ただしクライアントへの納品などでシステム費用、設置費用として請求されるのは問題ありません。
・プログラムによって何らかの不利益、損害が生じても一切の責任を負いません。
 あらかじめご了承の上ご使用ください。
 もし何らかのトラブルがあった場合には、ご相談いただければ解決策が見つかるかもしれません。
 (クライアントへの原因の説明など)
・プログラムは全ての環境(サーバー)での動作を保証するものではありません。
・改変等は自由ですが、自己責任でお願いします。
・有料版をご購入いただいた場合、初期不良を除き、ご使用後の返金には応じ兼ねます。
・有料版(著作権リンク削除含む)は1サイト(同一ドメイン)内であれば複製の上で複数利用可能です。
 2サイト目以降は都度サイトより購入申込みが必要になります。
 ※サブドメインはその性質上、別サイト(別ドメイン)とみなします。  

 ダウンロードいただいた時点で利用規約に同意したものとみなされます。

カスタマイズ、設置代行について

カスタマイズ(改造等)方法などのサポートは行っておりません。
カスタマイズや仕様変更、設置代行などは2,000円~の有料にて承ります。
フォームページとセットでの設置代行も承ります。※4,000円程度(項目数により変動有り)

CSVファイルのセキュリティ、アクセス制限について

はじめに書きましたが、CSVファイルをサーバー上に置いている以上、一般ユーザがアクセスできてしまうとそれはそのまま個人情報の流出になってしまいます。よくニュースでサイトから○○名分の顧客情報が漏洩などがありますが、これは単純にこのCSVファイルのように顧客情報をどこかに保存しており、それを何の制限も無くサーバー上に置いてしまっていたために流出してしまったなどが多いと言われます。もちろんデータベース上のデータ流出も考えられます。サーバー上に置いている以上、どこからもリンクされていないから大丈夫と考えるのは大変危険です。

デフォルトではすでに対策済です。htaccessでのアクセス制限を導入しております。
デフォルトでdataディレクトリ内にhtaccessファイルを設置し、ブラウザ上から直接CSVファイルにはアクセスできないよう設定しております。

CSVダウンロードはデフォルトではPHPのセッション(ログイン認証)を使った認証システムを採用しています。ただ、これは100%の安全を保証するものではありません。ユーザ名、パスワードでの認証はその性質上100%安全では無いからです(まぁこれは世のすべてのシステムに言えることですが)。ユーザ名、パスワード設定時はなるべく長い文字列、かつ複雑な文字列で設定することがセキュリティを高めます。また、定期的にパスワードを変更する、保存データも定期的に削除するなども有効です。

PHPセッションによる認証は一般的な認証法ですので、個人的には十分なセキュリティを保っていると考えています。これが突破されるようであれば他のサイトの認証やBasic認証なども突破されることになります。
またよりセキュリティを高めるためsession_regenerate_id関数にて現在のセッションIDを常に新しいものと置き換えるような実装も行っております。

もし限りなく100%に近い安全な方法を望むのであれば、mail.php内にてセッション認証をOFFに設定し、CSVをFTPソフトでダウンロードし、それをクライアントにメール等で送る、またはクライアントにFTPソフトで直接ダウンロードしてもらうかのどちらかになります。この場合セキュリティは高まりますが、不便さは避けられませんので、クライアントなどに合わせて選択下さい。

以下でパスワード作成時のポイント、及びページ内のリンクにパスワードの強度を測ってくれるページもあります。
マイクロソフト セーフティとセキュリティセンター
http://www.microsoft.com/ja-jp/security/online-privacy/passwords-create.aspx

Basic認証やhtaccessでのアクセス制限はレンタルサーバーであればほぼ設置可能と考えられますが、すべての環境での動作を保証するものではありません。必ずテスト段階でブラウザで直接サーバー上のCSVファイルへのアクセスができないことを確認下さい。(サーバ上のCSVファイルをブラウザで絶対パス(http~)にて見るということ)
「403 Forbidden」等のエラーが表示されるはずです。もしCSVが見れてしまっているならそれは大問題ですので、CSVと同じ階層(ディレクトリ)にhtaccessがあるかどうか、またhtaccessが使用可能なサーバーか(レンタルサーバーであればほぼ使えます)ご確認ください。無料サーバー等ではほぼ使えないと思います。(まぁその場合、そもそもPHP自体使えないと思います)

CSV保存ディレクトリを公開領域外に設置する

デフォルトではmail.phpと同じ階層に設置されていますが、これを公開領域外に設置することでセキュリティは高まります。

公開領域外とはたとえば、「public_html」や「htdocs」ディレクトリより上の階層のことです。
※またはこれらと同じ階層でもOKですね。
※サイトのトップページのファイルがある階層のさらに上の階層ということです。
※ただし、サーバーによっては公開領域より上の階層へは入れない場合もあります。
ここはブラウザではアクセスできないため安全と言えます。

mail.phpの設定箇所でCSV保存ディレクトリパスを設定する箇所がありますので、そちらにフルパスにて任意のパスを指定して下さい。パスはサーバーにより異なりますので割愛させていただきます。

フルパスの確認方法は内容は異なりますが以下ページをご参考下さい。
http://www.php-factory.net/trivia/01.php
※path.phpのみアップの上でパスを確認すればOKです。htaccessなどはこの場合使用しないので無視してOKです。

Basic認証によるアクセス制限

PHPセッション認証を解除し、自身でBasic認証を行いたい場合などは以下のページを御覧ください。

セキュリティ対策について

メールフォームプログラムのセキュリティ対策についてはフリー版と同じになりますので、フリー版のページをご参照下さい。

更新履歴

主な更新履歴はフリー版の更新履歴と同じになりますのでご参照下さい。

2014/5/30

主な変更点
データ自体には特に影響ありませんでしたが、チェックボックス、ラジオボタンがある場合で、かつ必須ではない場合に、未選択のまま送信するとCSVの列ズレが発生するものを、オプション設定で事前に登録項目を指定することで、空データを挿入し列ズレしないものへと変更しました。
事前に全項目を登録させる手間があるため、導入を見送ってきましたが、出来る限り簡単に設定できるよう、また指定した場合のみ有効となるようオプション設定として実装しました。

2013/5/11

有料版として配布開始

PHPメールフォーム(無料版)

PHPメールフォーム(有料版)

新着情報・更新履歴CMS(無料版)

投票・アンケートシステム(無料版)

テロップCMS(無料版)

写真ギャラリーCMS(無料版)

営業日カレンダーCMS(無料版)

営業日カレンダーCMS(有料版)

カレンダー予約フォーム(無料版)

カレンダー予約フォーム(有料版)

リンク集ページCMS(無料版)

アクセスカウンター(無料版)

ダウンロードカウンター(無料版)

その他

メールフォームの各種カスタマイズならお任せ下さい
業務効率化が可能なPHPオリジナルCMS制作します

役立つかも?なもの

豆知識や役立ち事など

PHPについて

各種情報