Wordpress-验证注册字段

时间:2016-09-28 11:14:42

标签: php wordpress registration

我想在我的注册表中查看国家代码,因此我为其创建了一个功能,并为用户创建了一个用于编写国家代码的字段。 但是当我检查它时,它总是返回$javab = Null并且用户因错误而无法注册!

你能告诉我为什么吗? 我该怎么做才能解决这个问题?

function checkNationalCode($code = '') {
    $code = (string) preg_replace('/[^0-9]/', '', $code);
    if(strlen($code) > 10 or strlen($code) < 8)
        return false;

    if(strlen($code)==8)
        $code = "00".$code;

    if(strlen($code)==9)
        $code = "0".$code;

    $list_code = str_split($code);
    $last = (int) $list_code[9];
    unset($list_code[9]);
    $i = 10;
    $sum = 0;

    foreach($list_code as $key => $_)
        $sum += intval($_) * $i--;

    $mod = (int) $sum % 11;

    if($mod >= 2)
        $mod = 11 - $mod;

    return true;
}

以下是我的add_action部分,用于创建表单:

add_action( 'register_form', 'myplugin_register_form' );
function myplugin_register_form() {

    $code_melli = ( ! empty( $_POST['code_melli'] ) ) ? trim( $_POST['code_melli'] ) : '';
    $code = ( ! empty( $_POST['code_melli'] ) ) ? trim( $_POST['code_melli'] ) : '';

        ?>
        <p>
            <label for="code_melli"><?php _e( 'کد ملی :', 'mydomain' ) ?><br />
                <input type="text" name="code_melli" id="code_melli" class="input" value="<?php echo esc_attr( wp_unslash( $code_melli ) ); ?>" size="25" /></label>
        </p>
        <?php
}

我通过将其发送到函数并返回boolean变量来检查我的字段。

function myplugin_check_fields( $errors, $sanitized_user_login, $user_email ) {

    $javab = checkNationalCode($code);

    if ( $javab == 0 ) {
        $errors->add( 'code_melli_error', __( "<strong>خطا </strong>: کد ملی شما اشتباه میباشد! ", 'mydomain' ) );
    }
    return $errors;
}

1 个答案:

答案 0 :(得分:0)

解决!通过改变

$javab = checkNationalCode($code);

致:

$javab = checkNationalCode($_POST['code_melli']);