Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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,我正在开发一个多语言竞赛网站,用户只能注册一次。我在用。使用CFDB作者提供的以下代码,此函数检查表单是否已提交 function is_already_submitted($formName, $fieldName, $fieldValue) { require_once(ABSPATH . 'wp-content/plugins/contact-form-7-to-database-extension/CFDBFormIterator.php'); $exp = new CF

我正在开发一个多语言竞赛网站,用户只能注册一次。我在用。使用CFDB作者提供的以下代码,此函数检查表单是否已提交

function is_already_submitted($formName, $fieldName, $fieldValue) {
    require_once(ABSPATH . 'wp-content/plugins/contact-form-7-to-database-extension/CFDBFormIterator.php');
    $exp = new CFDBFormIterator();
    $atts = array();
    $atts['show'] = $fieldName;
    $atts['filter'] = "$fieldName=$fieldValue";
    $atts['unbuffered'] = 'true';
    $exp->export($formName, $atts);
    $found = false;
    while ($row = $exp->nextRow()) {
        $found = true;
    }
    return $found;
}
以及以下验证表单的代码,确保没有重复的电子邮件(这就是我打算检测重复用户的方式)

这种验证工作很好,因为它不允许重复的电子邮件,但我面临的问题是,我想了解一些方向,我希望错误消息显示为响应。响应提示
一个或多个字段有错误。请检查并重试。
,我希望它显示您已注册。[见下图]


谢谢

字符串“一个或多个字段出现错误”的位置。请检查并重试。“确切地说,是从哪里来的?”?你找过了吗?啊,可能来自于联系方式7验证。。破解方法是用JavaScript替换字符串:-/您是否检查过,是否调用了one_user_per_contest()函数,是否达到了第一个和第二个if?函数invalidate传递
invalidate->invalid_字段
数组,并将“reason”作为键。见联系方式-7/包括/验证。php@jasie“一个或多个字段有错误。请检查并重试。”是CF7“Validation errors Occessed”的默认消息,是的每个用户一个竞赛()函数工作,只是没有将消息显示为响应(这是我想要实现的)@HowardE在本例中,需要$tag来阻止表单发送。在检查contact-form-7/includes/validation.php第7行(即公共函数_构造行)之后,我不确定如何在数组中写入此内容,字符串“一个或多个字段有错误”。请检查并重试。“确切地说,是从哪里来的?”?你找过了吗?啊,可能来自于联系方式7验证。。破解方法是用JavaScript替换字符串:-/您是否检查过,是否调用了one_user_per_contest()函数,是否达到了第一个和第二个if?函数invalidate传递
invalidate->invalid_字段
数组,并将“reason”作为键。见联系方式-7/包括/验证。php@jasie“一个或多个字段有错误。请检查并重试。”是CF7“Validation errors Occessed”的默认消息,是的每个用户一个竞赛()函数工作,只是没有将消息显示为响应(这是我想要实现的)@HowardE在本例中,需要$tag来阻止表单发送。在检查contact-form-7/includes/validation.php第7行(即公共函数_构造行)之后,我不确定如何在数组中编写此代码
function one_user_per_contest($result, $tag) {
    $formName = array('Contest Form', 'Contest form ES'); // This is the form name for English and spanish
    $fieldName = 'your-email'; // Name of the field to validate, which is the email field
    $errorMessage = "you've signed up already"; // error message
    $name = $tag->name;
    if ($name == $fieldName) {
        if (is_already_submitted($formName, $fieldName, $_POST[$name])) {
            $result->invalidate($tag, $errorMessage);
        }
    }
    return $result;
}
add_filter('wpcf7_validate_email*', 'one_user_per_contest', 20, 2);