Php Wordpress wp_create_用户密码不';行不通
这个问题似乎已经足够老了,我已经在互联网上搜索了可能的解决方案,但似乎没有什么能成功解决这个问题 以下是我得到的: 在主题中,我有一个自定义表单,使用以下功能将postos用户名、密码和电子邮件发送到脚本:Php Wordpress wp_create_用户密码不';行不通,php,wordpress,authentication,hash,passwords,Php,Wordpress,Authentication,Hash,Passwords,这个问题似乎已经足够老了,我已经在互联网上搜索了可能的解决方案,但似乎没有什么能成功解决这个问题 以下是我得到的: 在主题中,我有一个自定义表单,使用以下功能将postos用户名、密码和电子邮件发送到脚本: function createSubscriberUser($username, $email, $password) { $user_id = username_exists( $username ); if ( !$user_id and email_ex
function createSubscriberUser($username, $email, $password) {
$user_id = username_exists( $username );
if ( !$user_id and email_exists($email) == false ) {
$user_id = wp_create_user( $username, $password, $email );
} else {
$hash = __('User already exists. Password inherited.');
}
}
这太棒了!用户已成功创建为订阅服务器。但是,当我尝试使用wp-login.php登录新创建的用户时,我总是发现凭据无效
因此,我使用以下代码片段只是为了了解发生了什么:
$username = $_POST['user'];
$pass = $_POST['pass'];
$user = get_user_by( 'login', $username );
if ( $user && wp_check_password( $pass, $user->data->user_pass, $user->ID) )
echo " That's it";
else
echo " Nope";
我总是得到一个“不”。。。但是如果我使用从仪表板创建的用户,我会得到“就是这样”的消息。因此,我的猜测是,当从用户输入纯文本密码时,wp_create_user生成的哈希值总是不同于wp_check_password生成的哈希值
有没有办法得到相同的哈希值?要从wp-login.php并以编程方式登录
非常感谢您的帮助。请确保为
wp\u create\u user
功能提供“纯文本”密码。我也面临同样的问题。我正在对密码进行哈希运算,并在wp\u create\u user
中使用它
wp\u create\u user
非常类似于wp\u insert\u user
的包装函数。请参阅以下源代码:
function wp_create_user($username, $password, $email = '') {
$user_login = wp_slash( $username );
$user_email = wp_slash( $email );
$user_pass = $password;
$userdata = compact('user_login', 'user_email', 'user_pass');
return wp_insert_user($userdata);
}
wp\u insert\u用户将生成自己的md5哈希
或者,您可以直接调用wp\u insert\u用户
,如下所示:
$user_login = wp_slash( $user_name );
$user_email = wp_slash( $user_email );
$user_pass = $user_password;
$userdata = compact('user_login', 'user_email', 'user_pass');
$user_id = wp_insert_user($userdata);
2015年的上一个答案。。。我也有类似的问题。在创建用户时,“密码”工作正常,但在更新用户时不起作用
原因是我试图使用同样可以更新用户数据的wp\u insert\u user()
但这里有一个陷阱:在更新时,您需要提供散列密码,而不是像最初创建时那样提供纯文本。虽然没有很好的记录,但你可以
有两种方法可以继续升级现有用户:
不要更新密码(即从参数中删除密码,或将其保留为空),让用户完全控制其密码
如果要修改现有用户密码,请使用:wp\u hash\u password('plain-text-pass')
在本例中,他们使用wp_generate_password()创建密码。也许可以看看wp_generate_password()返回的内容,这可能会帮助您进一步调试。wp_generate_password创建一个长度为n的随机字符串,这是纯文本,因此wp_create_用户仍然会对其进行散列,即使它是随机的。显示相关变量的输出可能会更好?我也有同样的问题,但仍然没有得到任何答案。