設計情報

投稿者: SPIRERS ナレッジ向上チーム 2025年8月25日 (月)

ブラックリストからのいたずら投稿を拒否する方法

入力必須や重複不可制御をかけていても、継続していたずら投稿を行ってくるユーザーに
遭遇したことはありませんか?
いたずら投稿を行うユーザーのIPアドレスやメールアドレス等の情報を取得している場合、
ブラックリストユーザーとしてDBで管理して、フォーム登録を拒否することが可能です。

本記事ではブラックリストからの登録があった際に、データ送信を完了させずにエラーを出す方法をご案内します。
いたずら投稿を登録させたくない場合にご活用ください。

想定挙動

ルックアップトリガとトリガ機能のエラー終了設定を利用します。
ブラックリストDBに登録されているユーザーがフォームから登録をしようとした際に、
ルックアップトリガで登録拒否フラグを取得して、その情報をもとにシステムエラーが発生する挙動です。
今回はメールアドレスが一致した場合に登録を拒否する設定をします。

必要構築物

  • ブラックリストDB
  • お問い合わせDB
  • お問い合わせフォーム
  • 【ポイント】

    お問い合わせDBに対して、ルックアップトリガ演算トリガを設定します。
    ルックアップトリガ:ブラックリストDBから登録拒否フラグを取得して登録の動作をする
    演算トリガ:登録時に登録拒否フラグがあるレコードはエラー終了させる動作をする

    設定方法

    1.DBの作成
    1-1.ブラックリストDBの作成

    ブラックリスト者のメールアドレスや、IPアドレス等を管理するためのDBを作成します。
    例として以下の構成でDBを作成します。
    ※トリガに使用するフィールドは、同じフィールドタイプである必要があります。
    そのためブラックリストDBとお問い合わせDBの両方に、同一のフィールドタイプを追加してください。

    フィールド名 フィールドタイトル フィールドタイプ 備考
    登録日時 registDate 登録日時
    メールアドレス mail メールアドレス(大・小文字無視)
    登録拒否フラグ rejection セレクト トリガの条件に使用するフィールド
    「登録拒否」のラベルを1つ用意する
    備考欄 memo テキストエリア(512bytes) 社内管理で必要な際に使用する
    ※IPアドレスで登録を拒否したい場合には、「IPアドレス専用のブラックリストDB」を作成いただきます。
    メールアドレス部分をIPアドレス取得用の「数字・記号・アルファベット(32 bytes)」に置き換えてDBを作成してください。

    1-2.お問い合わせDBの作成

    お問い合わせ内容を格納するDBを作成します。
    例として以下の構成でDBを作成します。

    フィールド名 フィールドタイトル フィールドタイプ 備考
    登録日時 registDate 登録日時
    登録拒否フラグ rejection セレクト トリガの条件に使用するフィールド
    「登録拒否」のラベルを1つ用意する
    名前 name テキストフィールド(128bytes)
    メールアドレス mail メールアドレス(大・小文字無視)
    お問い合わせ項目 question1 セレクト 任意の設問を用意する
    お問い合わせ内容 question2 テキストエリア(1024bytes) 任意の設問を用意する
    2.お問い合わせDBにルックアップトリガを設定する
    2-1.ルックアップトリガの設定

    新規登録時に発動するトリガを設定します。
    トリガの種別を「ルックアップ」として作成します。

    2-2.参照DBの選択とトリガ名を設定

    データを取得するDBを参照DBにて設定します。
    ブラックリスト情報を「ブラックリストDB」から取得するので、参照DBには「ブラックリストDB」を設定します。
    トリガ名を指定して詳細設定へ進みます。

    2-3.トリガの詳細設定:抽出条件

    抽出条件にて参照DB(ブラックリストDB)とトリガDB(お問い合わせDB)内のどの値と一致した場合に、
    ルックアップトリガを発動させるかを設定いたします。
    今回は例として「メールアドレス」が一致した場合に、発動するように条件設定いたします。
    プルダウンでフィールドを選択したら「条件を追加」を押下して追加してください。
    ※「IPアドレス」が一致した場合に動作させたいときは、IPアドレスの項目を選択してください。

    2-4.トリガの詳細設定:抽出条件の詳細設定

    抽出条件で値を取得した際の挙動について指定します。
    詳細条件設定の「+」を押下することで設定画面が開きます。

    詳細設定は以下の通りに設定します。

    2-5.トリガの詳細設定:登録フィールド

    参照先のデータをどのフィールドに登録するか紐づけを行います。
    登録拒否フラグの値を取得するため、参照DBのフィールドで「登録拒否フラグ」を紐づけします。

    3.お問い合わせDBに演算トリガを設定する
    3-1.演算トリガの設定

    新規登録時にルックアップトリガの次に動作するトリガを設定します。
    トリガの種別を「演算」として作成します。

    3-2.トリガ名の設定

    トリガ名を指定してフィールド設定へ進みます。

    3-3.フィールド設定

    演算トリガではブラックリスト者からの申込を防ぐため、ルックアップトリガで取得した登録拒否フラグを参照し、
    その値が「1」の場合にエラー終了するように、以下の条件式を設定します。

    1.演算結果格納フィールドの選択肢から「エラー終了」を選択し追加します。
    2.条件式を表示させ、下記のように設定し保存します。

    $rejection$ = 1

    4.お問い合わせフォーム作成

    WEB>フォーム>左上「新規作成」からお問い合わせフォームを作成してください。
    詳細は以下のサポートサイトをご確認ください。
    フォーム

    IPアドレスで登録を拒否する場合には、IPアドレスの取得が必要になるため、
    フォーム作成後に使用フィールドから数字・記号・アルファベット(32 bytes)フィールドを
    「特殊入力>登録者IPアドレス自動取得」を選択して保存してください。
    登録者IPアドレスを取得したい

    【注意事項】
  • ブラックリストユーザーが登録すると「エラー終了」のトリガが発動し、本人にエラーが通知されます。
  • 登録できたように見せる場合は、システムエラーページをサンキューページと同じデザインにしてください。
  • エラーページの差し替えキーワード「%val:error:code%: %val:error:msg%」を削除すると、
    エラー原因の特定が難しくなりますためご留意ください。
  • 5.ブラックリストユーザーをブラックリストDBへ登録
    5-1.ブラックリストユーザー情報をまとめたリストを用意する

    データの作り方はヘッダーありとヘッダー無しの形式がありますが、今回はヘッダー無し形式をご紹介します。
    エクセルを開き、横列に各データのタイトル(IPアドレス、メールアドレスなど)、縦列にそれぞれのデータを
    流し込み、下のような形式にします。

    【ポイント】
  • セレクトフィールドはラベルIDで登録する仕様のため、登録拒否フラグはラベルIDで記載してください。
  • データ一括登録はタブ区切り(TSV)形式で行う必要がありますため、タブ区切りでご用意ください。

  • 5-2.ブラックリストユーザーをDBへ登録する

    リストの用意が完了したらDBへ一括登録します。
    一括登録の手順につきましては、以下のサポートサイトをご確認ください。
    データ一括登録/更新

    件数が少ない場合には、DBオペレーションから1件ずつ登録することも可能です。
    DBオペレーションからの登録手順につきましては、以下のサポートサイトをご確認ください。
    DBオペレーションでデータを登録したい

    設定は以上で完了となります。

    解決しない場合はこちら コンテンツに関しての
    要望はこちら