フォームへの入力からIPアドレスをブロックする方法

はじめに

フォームへの入力から IP アドレスをブロックしたいですか?WPForms の Allow/Deny リストを使えばフォームに入力するユーザーを簡単にブロックできますが、IP アドレスだけでもブロックできることをご存知ですか?このチュートリアルでは、小さな PHP スニペットを使ってこれを実現する方法を紹介します。

許可/拒否リストの作成に関する詳細は、こちらのチュートリアルをご覧ください

フォームの作成

まず、フォームを作成し、このフォームにフィールドを追加します。フォームの作成にヘルプが必要な場合は、こちらのドキュメントをご覧ください

フォームを作成し、フィールドを追加します。

スニペットの追加

フォームを作成して公開したら、このスニペットをサイトに追加することができます。

あなたのサイトにスニペットを追加する方法や場所がわからない場合は、こちらのチュートリアルをご覧ください

/**
 * Block form submissions based on IP address
 *
 * @link   https://wpforms.com/developers/how-to-block-ip-addresses-from-completing-your-form/
 */
function wpf_ip_block( $fields, $entry, $form_data ) {
      
    // Get the current users IP address
    $ip_address = wpforms_get_ip();

    // List out the IP addresses separated by a comma
    $blocked_ips = array(
        '129.222.6.90',
        '127.0.0.1',
    );
      
    // Check if the current user IP address is a blocked IP
    if ( in_array( $ip_address, $blocked_ips ) ) {
		
        // Block form submission and print error
        wpforms()->process->errors[ $form_data[ 'id' ] ] [ 'footer' ] = esc_html__( 'Your IP address has been blocked. Please contact the site administrator for further assistance.', 'text-domain' );
    }
}
add_action( 'wpforms_process', 'wpf_ip_block', 10, 3 );

このスニペットは、まずユーザーのIPアドレスを検索し、それがブロックされたIPアドレスのリストに一致する場合、フォームは送信されず、エラーが表示されます。

このスニペットでIPアドレスをブロックすることができます。

これだけで、WPFFormへのIPアドレスの送信をブロックすることができます。名前によるフォーム送信もブロックしたいですか?チュートリアルの「フォームへの入力を名前でブロックする方法」をご覧ください。

アクション・リファレンス:wpforms_process