代码之家  ›  专栏  ›  技术社区  ›  iman soleimani

Wordpress验证注册字段

  •  1
  • iman soleimani  · 技术社区  · 9 年前

    我想在注册表中检查国家代码,所以我为它创建了一个函数,并为用户创建一个字段来编写他们的国家代码。 但当我检查时,它总是返回 $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 回复  |  直到 9 年前
        1
  •  0
  •   iman soleimani    9 年前

    解决了的!通过更改

    $javab = checkNationalCode($code);

    收件人:

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

    推荐文章