Programming

【php】メールフォームの送信内容をCSVに書き出す方法

2019/10/27

問い合わせフォームの送信内容を履歴として残るようにしたい、ということ結構ありますよね。

絞り込んで検索する、みたいな必要は無くってただただ履歴として見れればそれでいい、みたいな時だとわざわざDBを組んで…みたいなことをするのは結構面倒です。

そんな時にはフォームの送信内容をCSVに記述する形にすれば非常に簡単です。

サンプル(フォーム画面):https://kitamura-shuhei.me/demo/form_test/(Basic認証 test / test123)

サンプル(csvダウンロード)https://kitamura-shuhei.me/demo/form_test/file.csv

※誰でもダウンロードできるので個人情報は書かないようにしてください。

 

実装は非常に簡単で、送信完了画面のphpファイルに下記の5行を書いてもらえれば一瞬で完了します。


$ShiftJIS = $_POST; 
mb_convert_variables('Shift_JIS', 'UTF-8', $ShiftJIS); 
$csv = fopen('file.csv', 'a');
fputcsv($csv,$ShiftJIS);
fclose($csv);

だけで完了です。

一応解説しておくと

mb_convert_variables('Shift_JIS', 'UTF-8', $ShiftJIS);

こちらでメールフォームの送信内容をShift_JISに変更しています。これなしだとダウンロードしたCSVファイルをエクセルで開いた時に思いっきり文字化けしてしまいます(エクセルの文字コードはなぜかShift_JISのため。)

 


fopen('file.csv', 'a');

こちらでfile.csvを書き込みできる状態に変更します。

 


fputcsv($csv,$ShiftJIS);

こちらでCSVファイルにメールフォームの送信内容を記入しています。

 


fclose($csv);

こちらでCSVファイルをクローズして終わりです。

 

あとは通常通りメールフォームの記述を作成してください。

非常に簡単です。

 

今回は http://doshirouto.wp.xdomain.jp/web/php/1989 の内容を参考にさせていただきました。