Php WordPress:重置密码始终为无效密钥

Php WordPress:重置密码始终为无效密钥,php,wordpress,Php,Wordpress,我遇到了一个大问题,找不到解决办法。我已经安装了终极会员插件并激活了它^ 当我现在为一个用户重置密码时,我会从我的页面收到一封电子邮件,其中包含一个重置链接,该链接是由UM函数调用触发的插件的class password.php文件中生成的('password\u reset\u link'),它触发了该函数: /** * Get Reset URL * * @return bool|string */ function reset_url() { $user_id = um_u

我遇到了一个大问题,找不到解决办法。我已经安装了终极会员插件并激活了它^

当我现在为一个用户重置密码时,我会从我的页面收到一封电子邮件,其中包含一个重置链接,该链接是由UM函数调用触发的插件的
class password.php
文件中生成的('password\u reset\u link'),它触发了该函数:

/**
 * Get Reset URL
 *
 * @return bool|string
 */
function reset_url() {
    $user_id = um_user( 'ID' );
    delete_option( "um_cache_userdata_{$user_id}" );
    //new reset password key via WP native field
    $user_data = get_userdata( $user_id );
    $key = get_password_reset_key( $user_data );
    $url =  add_query_arg( array( 'act' => 'reset_password', 'hash' => $key, 'user_id' => $user_id ), um_get_core_page( 'password-reset' ) );
    return $url;
}
为了检查散列,我在WordPress的
users.php
文件中的函数
get\u password\u reset\u key
中添加了一个
error\u log
,通过该键记录生成的散列:

error_log( $hashed );
我还从Ultimate Member向电子邮件模板中添加了相同的哈希程序,结果如下:

[23-Dec-2018 15:57:41 UTC] 1545580661:$P$BiLzjLuPDHwVtUlnLmEQE19D4UpgJf0
[23-Dec-2018 15:57:41 UTC] 1545580661:$P$BCAl/MTbiuCyqiix7310EOEn.eJlQz1
[23-Dec-2018 15:57:41 UTC] 1545580661:$P$BH0W.btK4hYFNDidKh.DA46KZhp5Ay.
[23-Dec-2018 15:57:41 UTC] Hash from mail: 1545580661:$P$BOzHQ9mIasqhbdYnkK0n.EXhGXBFyD0
[23-Dec-2018 15:57:41 UTC] 1545580661:$P$BGRg8guQBbhuNKdMCIDSweNUDKLG1v/
如你所见,WordPress生成了4个哈希值,其中一个是直接从电子邮件中返回的
键生成的

现在,当我将电子邮件中生成的哈希值保存到
users
表中
user\u activation\u key
字段的值中,并按下重置按钮时,我可以更改密码


那么,为什么哈希生成不正确,我该如何解决这个问题呢?我的意思是,我可以更改函数并生成新的哈希,然后再次将其写入数据库,但这不是解决方案。

如果任何人在使用或不使用插件时遇到此问题, 检查电子邮件中的重置链接。 在我的例子中,链接是

<https://mywebsite.com/wp-login.php?action=rp&key=XXsomehashXX&login=username>

修复此问题所需的一切是删除url末尾的
%3E
,密码重置表单正在运行

修复UM Password Reset声明“无效密钥”问题的方法是禁用我的
/Password Reset
页面上的任何缓存。不确定这是否能解决您的问题,但万一有人来这里。

激活密钥无法正确更新。不知道为什么。“我正在做进一步的研究。你解决过这个问题吗?”是的,我解决了。你对此有问题吗?是的-和描述的一样。它无法正确生成电子邮件-尽管选择了html电子邮件。我限制密码重置。重置链接总是导致密钥无效。您是否也使用UltimateMember?如果是,您是如何在电子邮件中获得重置密码的重置链接的?我们在设置中遇到了相同的问题:Wordpress、WooCommerce、WooCommerce成员资格、WPS隐藏登录和Sucuri防火墙/WAF。为自定义登录页面取消防火墙上缓存的标记解决了该问题。谢谢
https://mywebsite.com/wp-login.php?action=rp&key=XXsomehashXX&login=username%3E