我使用以下脚本部分来修改我的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');
}
...我尝试添加字符类型和pw长度:
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');
}
......但它失败了。什么是错的(抱歉,我不是php专业人员)?
答案 0 :(得分:1)
preg_match
和strlen
函数一次只能在一个操作数上运行。这就是strlen($_POST['pass1'], $_POST['pass2'])
是错误函数调用的原因。正确的电话是:
strlen($_POST['pass1']) < 8 || strlen($_POST['pass2']) < 8
pregmatch
的相同内容:
!preg_match('/^[a-zA-Z0-9]+$/', $_POST['pass1']) || !preg_match('/^[a-zA-Z0-9]+$/', $_POST['pass2'])
最后,您的完整if
不明确。您要检查符号和密码长度:
if ( $_POST['pass1'] == $_POST['pass2']
&& preg_match('/^[a-zA-Z0-9]+$/', $_POST['pass1'])
&& strlen($_POST['pass1']) >= 8)
我们在这里检查密码是否匹配,pass1
与regexp匹配,pass1
允许密码长度。
请注意,我删除了pass2
的支票,因为如果密码匹配,则无需检查pass2
,因为它与pass1
相同。此外,如果密码不同,则不会执行其他检查,因为$_POST['pass1'] == $_POST['pass2']
已经false
。