dsbo44836129 2016-02-07 11:42
浏览 20
已采纳

PW字符类型和长度集成失败

I use the following script-part to modify my pw:

if ( !empty($_POST['pass1'] ) && !empty( $_POST['pass2'] ) ) {
    if ( $_POST['pass1'] == $_POST['pass2'] )
        wp_update_user( array( 'ID' => $current_user->ID, 'user_pass' => esc_attr( $_POST['pass1'] ) ) );
    else
        $error[] = __('Password doesn't match.', 'profile');
}

... and I try to add characters type and pw length:

if ( !empty($_POST['pass1'] ) && !empty( $_POST['pass2'] ) ) {
    if ( $_POST['pass1'] == $_POST['pass2']  && !preg_match('/^[a-zA-Z0-9]+$/', $_POST['pass1'], $_POST['pass2']) || strlen($_POST['pass1'], $_POST['pass2']) < 8)
        wp_update_user( array( 'ID' => $current_user->ID, 'user_pass' => esc_attr( $_POST['pass1'] ) ) );
    else
        $error[] = __('Password doesn't match.', 'profile');
}

... but it fails. Whats wrong (Sorry, I am not a php pro)?

  • 写回答

1条回答 默认 最新

  • doutusheng5879 2016-02-07 11:45
    关注

    Both preg_match and strlen functions do their work on one operand at a time. That's why strlen($_POST['pass1'], $_POST['pass2']) is a wrong function call. Proper call is:

    strlen($_POST['pass1']) < 8 || strlen($_POST['pass2']) < 8
    

    Same stuff for pregmatch:

    !preg_match('/^[a-zA-Z0-9]+$/', $_POST['pass1']) || !preg_match('/^[a-zA-Z0-9]+$/', $_POST['pass2'])
    

    And in the end your full if is not clear. It you want to check for symbols and for password length do this:

    if ( $_POST['pass1'] == $_POST['pass2']  
        && preg_match('/^[a-zA-Z0-9]+$/', $_POST['pass1']) 
        && strlen($_POST['pass1']) >= 8)
    

    Here we check if passwords match, and pass1 matches regexp and pass1 has allowed length.

    Note, that I removed checks for pass2 because if passwords match - there's no need to check pass2, as it's the same as pass1. Also if passwords differ - other checks will not be executed as $_POST['pass1'] == $_POST['pass2'] is already false.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗