【问题标题】:check if user email exists, and if not, stop the submit of the ninja form检查用户邮箱是否存在,如果不存在,则停止提交 ninja 表单
【发布时间】:2015-01-08 06:32:51
【问题描述】:

我有一个用 ninja 表单构建的表单,我使用 ajax 发送它。 我需要检查引入的邮箱是否已经存在于数据库中(user_email),如果存在则正确发送表单,如果不存在则不提交表单,我需要给用户“电子邮件不存在”之类的消息。 该表格是由注册用户完成的调查,注册用户向我们提供有关我们服务的反馈,但该调查位于用户无需登录即可发送意见的页面中。

我正在调查,目前我有:

function example_disable_saving_subs( $save, $form_id ) {

    global $ninja_forms_processing;
    $form_id = $ninja_forms_processing->get_form_ID();
    $email = ninja_forms_get_field_by_id( 18 );

    //cuestionario feedback profesor sobre creación de un curso
    if($form_id == 3){
        if( !email_exists( $email )) {
            $save = false;
            $ninja_forms_processing->add_error('email_no_existe', 'El email no existe');
        }
    }
    return $save;
}
add_filter( 'ninja_forms_save_submission', 'example_disable_saving_subs', 2, 10 );

但是我选择没有引入值的字段$email...另外,我不知道如何给用户“电子邮件不存在”的消息。

如您所见,我选择了过滤器 ninja_forms_save_submission。也许这不是正确的过滤器。 我希望你的宝贵帮助。 在此先感谢丹尼尔

【问题讨论】:

    标签: wordpress forms survey


    【解决方案1】:

    感谢您的帮助@Renato,我给您 +1 :) 确实可以通过你告诉我的方式实现,但是我不想破坏WordPress的api,也就是这个cms使用javascript、php等的方式。 .所以,我想通过忍者表单API来做到这一点,这是我用来构建这个调查的插件。 最后,我解决了它...这是我的错误,因为我没有使用正确的过滤器...再研究几个,还有另一个过滤器更合适:ninja_forms_pre_process 代码如下:

    function add_change_ninja_forms_landing_page(){
        add_action( 'ninja_forms_pre_process', 'handle_custom_ninja_forms' );
    }
    add_action( 'init', 'add_change_ninja_forms_landing_page' );
    
    function handle_custom_ninja_forms(){
    
        global $ninja_forms_processing;
    
        $form_id = $ninja_forms_processing->get_form_ID();  
    
        //if it's my form of survey
        if( $form_id == 3 ){
    
            $email = $ninja_forms_processing->get_field_value( 18 ); //pick up the value of the email field    
           //use the native function of wordpress to check if there's a user with this email 
           //is anyone has this email, it does not exist   
           if( !email_exists( $email )) {
                    $ninja_forms_processing->add_error('email_no_existe', 'El email indicado no está registrado en nuestra base de datos'); //add_error stop the form and gives the error message                
            }
        }
    }
    

    上面的代码一切正常! :) 谢谢!

    【讨论】:

      【解决方案2】:

      丹尼尔,

      我不熟悉ninja_forms,但是考虑到javascript,您可以将代码以验证用户是否存在到url中,然后在进行ajax调用时使用它来验证... 如果您无法更改 ajax 请求,您可以验证其模糊事件上的字段并禁用提交按钮,直到它被标记为“成功”

      如果您要创建 PHP 文件,但要使用所有 Wordpress 功能和功能,您可以简单地将这个文件包含在将被调用的文件的开头 require(wp-blog-header.php)

      【讨论】:

        猜你喜欢
        • 2013-05-04
        • 1970-01-01
        • 2018-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多