フォームの投稿データ(ログ)の保持と送信回数の制限
フォームの投稿データ(ログ)の保持と送信回数の制限
フォームから送信された内容は、投稿データ(ログ)としてデータベースに保存されます。ログには宛先・本文・接続元の IP アドレスなどの個人情報が含まれるため、残さない設定や、一定の期間で自動削除する設定ができます。また、同じ宛先・接続元からの送信が短時間に集中したときに、メール送信などを制限できます。
対応バージョン: Ver. 3.2.39 以降で利用できます。
ログを残さない
フォームの編集画面の「ログ」で「ログを残さないようにする」にチェックを入れると、そのフォームの投稿データはデータベースに保存されません。
Ver. 3.2.39 以降は、新しくフォームを作成したときに、この項目にチェックが入った状態(ログを残さない)が既定になります。既存のフォームの設定は変わりません。投稿データを管理画面で確認する運用のフォームは、チェックを外してください。
ログの保持日数
フォームの編集画面の「ログの保持日数」に、投稿データを残す日数を指定します。この日数を過ぎたログは自動で削除されます。0 を指定すると削除しません(既定)。
保持日数はフォームごとに設定します。
グローバルフォームでは、下位のブログで投稿されたログも、このフォームの保持日数の対象になります。
数字以外や負の値を指定した場合は、誤って削除しないよう、無期限として扱います。
フォームをエクスポート・インポートしたときは、保持日数も引き継がれます。
削除は、通常のアクセスの終わりに 1 時間に 1 回まで実行されます。
投稿データの一覧画面からは、そのフォームの投稿データをすべて削除することもできます。
cron で削除する
アクセスが少ないサイトや、アクセスのタイミングで削除を走らせたくない場合は、通常のアクセスでの削除を止めて、cron で実行できます。
通常のアクセスでの削除を止めるには、a-blog cms 設置ディレクトリの「.env ファイル」に次を指定します。
FORM_LOG_PURGE_ON_REQUEST=off # off にすると、通常のアクセスでは削除しないcron から実行する処理には、cron のサンプル(cron/example.php)に次の例があります。フォームごとの保持日数に従い、対象が無くなるまで削除します。
$deleted = App::make('form.log-purger')->purge(time());
acmsStdMessage('[Info] フォームの投稿ログを ' . $deleted . ' 件削除しました');メールの送信回数の制限
未ログインの訪問者から、短時間に大量のメールを送らせることができないよう、フォームの送信に回数の上限を設けています。フォームの編集画面の「セキュリティ」で設定します。
「メール送信制限」には、回数を数える時間(分)と、同じ宛先・同じ接続元ごとの回数の上限を指定します。「送信停止時間」には、上限を超えたときに制限を続ける時間(分)を指定します。同じ接続元の上限を超えたときは投稿を受け付けず、同じ宛先の上限を超えたときは自動返信だけを止めます。
入力欄を空にしたときは、config.system.yaml のデフォルト値が使われます。
コンフィグ | 説明 | 既定値 |
|---|---|---|
form_mail_trial_time | 回数を数える時間(分) | 15 |
form_mail_trial_number | 上の時間のあいだに、同じ宛先へ自動返信を送る回数の上限 | 3 |
form_mail_ip_trial_number | 上の時間のあいだに、同じ接続元から受け付ける送信回数の上限 | 20 |
form_mail_lock_time | 上限を超えたときに、制限を続ける時間(分) | 15 |
デフォルト値は管理画面からは変更できません。変更するときは、config.system.yaml に指定します。

