但我点击这个链接后,wordpress一贯提示invalid key,也便是说key缺点。
由于是wordpress框架,从url的路由看,我就打开wp-login.php,然后查看个中的action rp。
我直不雅观觉得,该当是get url中的key跟数据库中的key值不相等导致的。
以是,想进入系统的mysql一查究竟,但遗憾的是竟然没有mysql权限,我也不知道他的网站是让谁做的,估计是个外包吧。
由于朋友是不懂技能的,很多事情问他也是一问三不知。
没办法,哪就自己闷头搞吧。

外事未定问google,内事未定问baidu。
我习气性地打开baidu,输入:wordpress新用户注册 key无效。
创造碰到类似问题的同行也不少,且看他们是如何办理的?他们的建议是:

编辑wp-includes文件夹中的pluggable.php文件,把变量$message里的>符合去掉。
我照做了,创造还是弗成的哦。
以是,网上的东西,很多都得自己再实践下,否则是要被坑的。
但到这一步,我更加确信是key的值出问题了。
然后我又仔细看了下邮件发送过来的链接,创造这个链接有个问题。

phpampamp转义一个wordpress下转义符的怪事及解决办法 NoSQL

这个链接里的&是&被转义后的值。
那么,我在浏览器里输入时把&更换成&会若何呢?创造竟然OK了,这时密码重置成功了。
这样,问题就好办了,理论上,我只要修正pluggable.php,把&更换成&就可以了。
$message的变量赋值如下:

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

但问题是,我用htmlspecialchars_decode($message)处理也弗成,用str_replace(\公众&amp;\"大众,\公众&\"大众,$message)处理也弗成。
也便是说,这个&amp;更换不成&。

我再看这$message变量,rp后面的&怎么没被转义,而$key后面的&却被转义了。
以是,到这一步,我就疑惑是不是语句的顺序有问题?然后,我就把&key=$key放到($user->user_login)后面。
然后,根据前面baidu的一些见地,顺便把<和>符合也去掉。
这样,修正后的message如下:

$message .= network_site_url(“wp-login.php?action=rp&login=” . rawurlencode($user->user_login).\"大众&key=$key\"大众, ‘login’) . “\r\n\r\n”;

问题就这样办理了。

总结:1,涌现问题,问baidu一样平常都能找到一些建议。
但这些建议不一定完备精确,自己还得根据实际情形修正。
2,html的一些分外符号,在存数据库之前须要被转义,在取出数据库后,须要被转换回来,这也是一个很主要的知识点。