Php 使用自定义响应联系人表格7将用户提交限制为每个用户一次
我正在开发一个多语言竞赛网站,用户只能注册一次。我在用。使用CFDB作者提供的以下代码,此函数检查表单是否已提交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
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);