CF7 - 数据库字段验证

时间:2017-01-11 14:15:54

标签: php mysql wordpress contact-form-7

我想在数据库中使用自定义列表验证我的cf7表单。因此,如果用户在我的列表中不在字段中输入值,则表单将无法通过验证。它列出了60,000个条目。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用cf7的自定义验证钩子。你需要做这样的事情:

add_filter( 'wpcf7_validate_email*', 'custom_email_confirmation_validation_filter', 20, 2 );

function custom_email_confirmation_validation_filter( $result, $tag ) {
$tag = new WPCF7_FormTag( $tag );

if ( 'your-email-confirm' == $tag->name ) {
    $your_email = isset( $_POST['your-email'] ) ? trim( $_POST['your-email'] ) : '';
    $your_email_confirm = isset( $_POST['your-email-confirm'] ) ? trim( $_POST['your-email-confirm'] ) : '';

    if ( $your_email != $your_email_confirm ) {
        $result->invalidate( $tag, "Are you sure this is the correct address?" );
    }
}

return $result;
}

这是电子邮件字段的基本自定义验证,您需要自定义如下:

add_filter( 'wpcf7_validate_email*', 'custom_field_validation', 20, 2 );

function custom_field_validation( $result, $tag ) {
$tag = new WPCF7_FormTag( $tag );

global $wpdb;
$searchTerm = $wpdb->get_row('select * from ' . $wpdb->prefix . 'name_of_table where name_of_field = "' . $_POST['given_value'] . '"');

if(!$searchTerm)
    $result->invalidate( $tag, "Value doesn't match" );

return $result;
}

如果您使用的是文本字段,也可以使用wpcf7_validate_text而不是wpcf7_validate_mail