【问题标题】:wordpress check_password_reset_key not workingwordpress check_password_reset_key 不起作用
【发布时间】:2017-12-11 21:01:47
【问题描述】:

我正在尝试为某些用户创建重置密码,我不想调用标准的 WordPress 表单,因为它在主题等上看起来不太好。

所以过程很简单,用户点击忘记密码,然后输入他们的电子邮件地址。如果用户的角色正确,则调用 get_password_reset_key 并向用户发送一封包含密钥和电子邮件地址的电子邮件。

当用户单击电子邮件的链接时,我使用密钥和用户登录名调用check_password_reset_key,它应该可以工作......

但是,我不断收到WP_Error 等。

所以我创建了一个非常简单的测试,但仍然失败。我已经在 Google 上搜索了很多并尝试了一些建议,但仍然无法正常工作。

$user = get_user_by( 'email', $_POST['email_address'] );
echo "user_login = " . $user->user_login . "<br>";

$key = get_password_reset_key($user->user_login );
echo "key = $key<br>";          

$tmp =  check_password_reset_key($key, $user->user_login );
print_r($tmp);

// 打印:

WP_Error 对象 ( [errors] => 数组 ( [invalid_key] => 数组 ( [0] => 无效键 ) ) [error_data] => 数组 ( ) )

【问题讨论】:

  • 你找到答案了吗?我收到此错误,无法找到任何相关内容

标签: php wordpress


【解决方案1】:

请检查以下内容以获取详细文档,

https://developer.wordpress.org/reference/functions/check_password_reset_key/

它是怎么说的,

用户点击链接后该字段被散列;旧值没有 不再接受。

那么会发生什么,当用户单击链接时,在您可以操作它之前,WordPress 已经在执行它的任务并且当您拥有要使用的密钥时该密钥已经过期。

您可以做的是通过您自己生成的密钥来完成所有这些过程,或者将 password_reset_key 存储在 user_meta 中并操纵或使用与忘记密码或重置密码相关的任何操作。

https://codex.wordpress.org/Plugin_API/Action_Reference/password_reset

希望这个有帮助:)

【讨论】:

  • 感谢您的快速响应,也许我没有很好地解释我的测试。我将代码放入一个单独的小函数中,因此无需用户干预。
  • 然后我在本地复制了“check_password_reset_key”函数(称为“check_password_reset_key99”)并在出现问题时进行了跟踪,我认为这与: $hash_is_correct = $wp_hasher->CheckPassword( $key , $pass_key ); my $wp_hasher does not have CheckPassword element and therefore $hash_is_correct is not set: wp_hasher = PasswordHash Object ( [itoa64] => ./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz [iteration_count_log2] => 8 [portable_hashes] => 1 [random_state] => 0971c81c5b5e5303302903d42c925696 ) Clearly I我误解了发生了什么
  • 我认为 'get_password_reset_key' 之后的 'check_password_reset_key' 应该不会导致任何错误,因为我的理解是 get_password_reset_key 创建密钥并返回它,然后添加带有超时的密钥的散列版本到'user_activation_key'。然后,当使用密钥(未散列)调用“check_password_reset_key”时,它将返回密钥不等于“user_activation_key”,但在密钥被散列时会返回。
猜你喜欢
  • 2021-09-13
  • 2012-05-03
  • 2017-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多