Ultimate|Ultimate Member 插件登录页面添加自定义验证功能
以增加 ABN码自定义验证为例;
在 wordpress 主题根目录下的 functions.php 中添加如下代码;
//验证ABNadd_action('um_submit_form_errors_hook_','um_custom_validate_abn', 999, 1);
function um_custom_validate_abn( $args ) {
global $ultimatemember;
if ( isset( $args['abn'] ) && !isValidAbnOrAcn($args['abn']) ) {
$ultimatemember->form->add_error( 'abn', 'Abn code format error' );
}
/*$args 为data-key值*/
}
/**
* Return true if $number is a valid ABN
* @param string $number
* @return bool True if $number is a valid ABN
*/
function isValidAbnOrAcn($number) {
$number = preg_replace('/[^0-9]/', '', $number);
if(strlen($number) == 9) {
return isValidAcn($number);
}
if(strlen($number) == 11) {
return isValidAbn($number);
}
return false;
}
/**
* Validate an Australian Business Number (ABN)
* @param string $abn
* @link http://www.ato.gov.au/businesses/content.asp?doc=/content/13187.htm
* @return bool True if $abn is a valid ABN, false otherwise
*/
function isValidAbn($abn) {
$weights = array(10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19);
// Strip non-numbers from the acn
$abn = preg_replace('/[^0-9]/', '', $abn);
// Check abn is 11 chars long
if(strlen($abn) != 11) {
return false;
}
// Subtract one from first digit
$abn[0] = ((int)$abn[0] - 1);
// Sum the products
$sum = 0;
foreach(str_split($abn) as $key => $digit) {
$sum += ($digit * $weights[$key]);
}
if(($sum % 89) != 0) {
return false;
}
return true;
}
/**
* Validate an Australian Company Number (ACN)
* @param string $acn
* @link http://www.asic.gov.au/asic/asic.nsf/byheadline/Australian+Company+Number+(ACN)+Check+Digit
* @return bool True if $acn is a valid ACN, false otherwise
*/
function isValidAcn($acn){
$weights = array(8, 7, 6, 5, 4, 3, 2, 1, 0);
// Strip non-numbers from the acn
$acn = preg_replace('/[^0-9]/', '', $acn);
// Check acn is 9 chars long
if(strlen($acn) != 9) {
return false;
}
// Sum the products
$sum = 0;
foreach(str_split($acn) as $key => $digit) {
$sum += $digit * $weights[$key];
}
// Get the remainder
$remainder = $sum % 10;
// Get remainder compliment
$complement = (string)(10 - $remainder);
// If complement is 10, set to 0
if($complement === "10") {
$complement = "0";
}
return ($acn[8] === $complement);
}
【Ultimate|Ultimate Member 插件登录页面添加自定义验证功能】参考网站:
http://docs.ultimatemember.com/article/94-apply-custom-validation-to-a-field
https://paulferrett.com/2009/validating-abns-and-acns/
推荐阅读
- 程序员|Google又更新了(实战-MergeAdapter,android插件化和热修复区别)
- jQuery插件
- VueX--VUE核心插件
- 用npm发布一个包的教程并编写一个vue的插件发布
- 插件化无法获取或找到.so文件
- maven使用tomcat7插件编译jsp出错
- 超好用的PubMed文献查找管理插件—Scholarscope
- Android|Android Studio 的 Browse Repositories 下载不了插件
- Mybatis|Mybatis Plus 分页插件
- echarts插件-从后台请求的数据在页面显示空白的问题