As of Quform version 2.15.0, there are options in the form builder to limit form submissions to 1 per IP address and/or one per logged-in user. See the 2.15.0 release blog post for more info:
Show legacy instructions
One submission per IP address
Add the following code to the WordPress theme functions.php file (or create a plugin for it).
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| add_filter('quform_pre_process_1', function (array $result, Quform_Form $form) { global $wpdb; $query = $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->prefix}quform_entries WHERE form_id = %d AND ip = %s;", $form->getId(), Quform::getClientIp() ); if ($wpdb->get_var($query) > 0) { $result = array( 'type' => 'error', 'error' => array( 'enabled' => true, 'title' => '', 'content' => 'Only one submission is allowed' ) ); } return $result; }, 10, 2); |
add_filter('quform_pre_process_1', function (array $result, Quform_Form $form) { global $wpdb; $query = $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->prefix}quform_entries WHERE form_id = %d AND ip = %s;", $form->getId(), Quform::getClientIp() ); if ($wpdb->get_var($query) > 0) { $result = array( 'type' => 'error', 'error' => array( 'enabled' => true, 'title' => '', 'content' => 'Only one submission is allowed' ) ); } return $result; }, 10, 2);
- On line 1, replace the number
1
with the form ID
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| add_filter('quform_pre_process', function (array $result, Quform_Form $form) { global $wpdb; $query = $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->prefix}quform_entries WHERE form_id = %d AND ip = %s;", $form->getId(), Quform::getClientIp() ); if ($wpdb->get_var($query) > 0) { $result = array( 'type' => 'error', 'error' => array( 'enabled' => true, 'title' => '', 'content' => 'Only one submission is allowed' ) ); } return $result; }, 10, 2); |
add_filter('quform_pre_process', function (array $result, Quform_Form $form) { global $wpdb; $query = $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->prefix}quform_entries WHERE form_id = %d AND ip = %s;", $form->getId(), Quform::getClientIp() ); if ($wpdb->get_var($query) > 0) { $result = array( 'type' => 'error', 'error' => array( 'enabled' => true, 'title' => '', 'content' => 'Only one submission is allowed' ) ); } return $result; }, 10, 2);
One submission per user account (for logged in users)
Add the following code to the WordPress theme functions.php file (or create a plugin for it).
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| add_filter('quform_pre_process_1', function (array $result, Quform_Form $form) { global $wpdb; $query = $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->prefix}quform_entries WHERE form_id = %d AND created_by = %d;", $form->getId(), get_current_user_id() ); if ($wpdb->get_var($query) > 0) { $result = array( 'type' => 'error', 'error' => array( 'enabled' => true, 'title' => '', 'content' => 'Only one submission is allowed' ) ); } return $result; }, 10, 2); |
add_filter('quform_pre_process_1', function (array $result, Quform_Form $form) { global $wpdb; $query = $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->prefix}quform_entries WHERE form_id = %d AND created_by = %d;", $form->getId(), get_current_user_id() ); if ($wpdb->get_var($query) > 0) { $result = array( 'type' => 'error', 'error' => array( 'enabled' => true, 'title' => '', 'content' => 'Only one submission is allowed' ) ); } return $result; }, 10, 2);
- On line 1, replace the number
1
with the form ID
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| add_filter('quform_pre_process', function (array $result, Quform_Form $form) { global $wpdb; $query = $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->prefix}quform_entries WHERE form_id = %d AND created_by = %d;", $form->getId(), get_current_user_id() ); if ($wpdb->get_var($query) > 0) { $result = array( 'type' => 'error', 'error' => array( 'enabled' => true, 'title' => '', 'content' => 'Only one submission is allowed' ) ); } return $result; }, 10, 2); |
add_filter('quform_pre_process', function (array $result, Quform_Form $form) { global $wpdb; $query = $wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->prefix}quform_entries WHERE form_id = %d AND created_by = %d;", $form->getId(), get_current_user_id() ); if ($wpdb->get_var($query) > 0) { $result = array( 'type' => 'error', 'error' => array( 'enabled' => true, 'title' => '', 'content' => 'Only one submission is allowed' ) ); } return $result; }, 10, 2);