我有一个案例,即我正在使用wp_insert_user()
注册用户并使用wp_signon()
登录。注册成功但是当我使用wp_signon()
时,我收到错误:
'用户名或密码无效。请再试一次!'。
以下是我的努力,我找不到问题。
function wp_create_user_my($username, $password, $email = '', $fname, $lname) {
$first_name = wp_slash($fname);
$last_name = wp_slash($lname);
$user_login = wp_slash($username);
$user_email = wp_slash($email);
$user_pass = $password;
$userdata = compact('user_login', 'user_email', 'user_pass','first_name','last_name');
return wp_insert_user($userdata);
}
以下是signon()
$login_data['user_login'] = esc_attr($username);
$login_data['user_password'] = esc_attr($new_password);
$login_data['remember'] = true;
$user_verify = wp_signon($login_data, false);
答案 0 :(得分:1)
见:
$login_data['user_login'] = esc_attr($username);
$login_data['user_password'] = esc_attr($new_password);
esc_attr
函数对<, >, &, " and '
个符号/符号进行编码。如果用户拥有其用户名或密码中的任何一个,它将与最初存储/保存在数据库中的用户不同,因为传递给与数据库存储值进行比较的是任何或所有的转义版本。那些人物。
我建议您使用插入用户时使用的wp_slash
函数:
$login_data['user_login'] = wp_slash($username);
$login_data['user_password'] = wp_slash($new_password);
这样,您获得的内容与插入数据库的内容一致。