wordpress用户注册重置密码链接无效 导致重置失败-♚纪实阁付涛♚

wordpress用户注册重置密码链接无效 导致重置失败

前文摘要

前几天又重新把插件easy-wp-smtp安装上了,主要是用户注册和支付购物购买程序及软件后,要用邮箱来接收,没有一个邮件发送很麻烦;

但是同时有了邮件后,如果收到大量用户的垃圾注册,频繁收到邮件也麻烦,在前面纪实阁写过一篇文章如何禁止垃圾用户注册,只允许指定后缀用户加入的方案,不知道的可参考:

对于这个邮件插件easy-wp-smtp的安装使用,可参考:

问题显示

然而在使用过程中发现无论用户新注册,还是寻找回密码,在接收到的邮件里面,都存在着一个问题,大体显示如下:

而查阅链接发现:

而通过上图中发现,导致失败的主要原因是URL里面包括了“<“和”>”这两个字符;当用户点击这个链接进入重置密码的界面的时候,就会出现bug,提示 您的密码重设链接无效,请在下方请求新链接:

修改方案

解决找回密码时提示“您的密码重设链接无效”:

通过修改WordPress根目录下wp-login.php文件可以解决这个问题。将文件下载,再在编辑器中打开wp-login.php这个文件找到下面这段代码,(WordPress4.5.3版本在大概在330行),而我正在用的WordPress4.9.8版本在369行处;找到以下代码:

<span class="crayon-v">$message</span><span class="crayon-h"> </span><span class="crayon-sy">.</span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-s">'<'</span><span class="crayon-h"> </span><span class="crayon-sy">.</span><span class="crayon-h"> </span><span class="crayon-e"><a href="https://www.diebaosoft.com/tag/network" title="【查看含有[network]标签的文章】" target="_blank">network</a>_site_url</span><span class="crayon-sy">(</span><span class="crayon-s">"wp-login.php?action=rp&key=$key&login="</span><span class="crayon-h"> </span><span class="crayon-sy">.</span><span class="crayon-h"> </span><span class="crayon-e">rawurlencode</span><span class="crayon-sy">(</span><span class="crayon-v">$user_login</span><span class="crayon-sy">)</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-s">'login'</span><span class="crayon-sy">)</span><span class="crayon-h"> </span><span class="crayon-sy">.</span><span class="crayon-h"> </span><span class="crayon-s">">\r\n"</span><span class="crayon-sy">;</span>

将这段代码修改成下面这段代码:

$message .= <a href="https://www.diebaosoft.com/tag/network" title="【查看含有[network]标签的文章】" target="_blank">network</a>_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login');

解决新用户注册时,点击邮件中的重置密码链接提示“您的密码重设链接无效”

打开WP安装目录下的/wp-includes/pluggable.php,找到如下代码(1741行左右):

$message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . ">\r\n\r\n";

修改为:

$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . "\r\n\r\n";

以上修改后,用户收到的密码重置及新用户收到的密码设置邮件将不会再包含“<>”,用户再邮箱中点击链接后即可正常重置或者设置密码。

以上修改涉及到Wordpress源代码的修改,每次升级Wordpress后修改会被覆盖,必须重新进行以上修改。

然后保存并覆盖原来的wp-login.php文件,此时再次测试找回密码就没有问题了,邮件里的链接格式已经发生变化。

本文由 ♚纪实阁付涛♚ 作者:付涛纪实阁 发表,其版权均为 ♚纪实阁付涛♚ 所有,文章内容系作者个人观点,不代表 ♚纪实阁付涛♚ 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论