Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 联络表格7“;在“发送邮件”之前;停止发送并显示自定义消息_Php_Wordpress_Contact Form 7 - Fatal编程技术网

Php 联络表格7“;在“发送邮件”之前;停止发送并显示自定义消息

Php 联络表格7“;在“发送邮件”之前;停止发送并显示自定义消息,php,wordpress,contact-form-7,Php,Wordpress,Contact Form 7,我使用联系人表单7“发送邮件前”功能检查表单字段,以及字段“密码”中的值是否与预定义密码匹配。如果“password”字段中的值等于有价值的$definedPassword,则表单应正常执行,但当值不同时,我不希望执行表单并显示自定义消息。我很高兴得到大家的帮助: <?php add_action( 'wpcf7_before_send_mail', 'wpcf7_login_stream_check' ); function wpcf7_login_stream_ch

我使用联系人表单7“发送邮件前”功能检查表单字段,以及字段“密码”中的值是否与预定义密码匹配。如果“password”字段中的值等于有价值的$definedPassword,则表单应正常执行,但当值不同时,我不希望执行表单并显示自定义消息。我很高兴得到大家的帮助:

<?php 
    add_action( 'wpcf7_before_send_mail', 'wpcf7_login_stream_check' );

    function wpcf7_login_stream_check($WPCF7_ContactForm) {
        $definedPassword = "234";
        $wpcf7 = WPCF7_ContactForm :: get_current();
        $form_id = $wpcf7->id;
        
        if ($form_id === 105) {
            $submission = WPCF7_Submission::get_instance();  
            if ($submission) {
                $posted_data = $submission->get_posted_data();
                $password = $posted_data['password'];
        
                if($password == $definedPassword ) {
                    /*  NORMAL BEHAVIOUR */
                } else {
                    /* PREVENT FORM FROM SENDING AND SHOW CUSTOM-MESSAGE */
                }
            }
        }
    }

我认为最好使用表单验证功能,而不是在发送邮件之前使用
。如果您的字段是文本字段,并且密码是静态的。。。如果添加到functions.php,这将起作用。如果您没有使用
[text*password]
可以在
添加过滤器中相应地调整标签类型

使用接触表7.5.2.2进行测试

函数cf7\u检查\u密码\u字段($result,$tags){
$definedPassword=“234”;
$tags=新WPCF7\u FormTag($tags);
$name=$tags->name;
//检查标记名是否为password或exit
如果($name!=“password”)返回$result;
//如果密码无效
如果($\u POST['password']!==$definedPassword){
//在这里设置您的消息
$result->invalidate($tags,uuu('Password not match','text_domain'));
}
返回$result;
}
添加过滤器('wpcf7_验证_文本','cf7_检查_密码_字段',20,2);//文本字段
添加过滤器(“wpcf7验证文本*”,“cf7检查密码字段”,20,2);//请求。文本字段

除非您需要运行sql查询来确定密码在数据库中是否有效,否则我可能会尝试使用JS而不是php来实现这一点。如果决定使用php,则需要使用ISSET检查表单值是否等于$definedpassword