WordPress 忘记密码之后的解决方案

很多新人小伙伴安装完 WordPress 之后就设定了自动登录,一直都能够在不输入密码的情况下登录,直到某天使用某零或者某管家不小心把浏览器中的 Cookie(可能很多小白不懂——自行百度)全部给清掉了,在其他网站登录信息丢失的同时,发现自己的站也需要输入当时安装 WordPress 时输入的密码,然而这时候距离自己建站第一次登录已经过去了相当长的一段时间,再回忆起来已经不太现实了,于是只能通过一定的技术手段来找回密码。今天我就在这里来系统性的总结下几种解决方案。

使用系统自带的找回密码功能
这个功能位于登录页面的下方,直接点击输入当时输入的管理员邮箱,使 WordPress 将密码重置连接发送到自己的邮箱。
这种方法适用于主机可以发送邮件的情况,无论是通过 mail() 函数发送亦或者是 SMTP 代发都可以实现。
重装 WordPress
这个方法是最简单粗暴的,清空数据库之后任何关于网站的信息都会丢失,包括密码信息。
改数据库
根据网上的方法,将自己管理员的密码 user_pass 字段改为”5d41402abc4b2a76b9719d911017c592″, 即可将密码重置为 hello,之后我们就又能登录进去了。当然,这个字符串是 md5 加密过的’hello’,在更改数据的时候,也可以使用 MySQL 的内建函数 MD5() 来生成一个密码:
Update wp_users
Set user_pass=MD5('新密码')
where user_login='登录名';

使用 wp_user_update() 函数直接重置密码.
这种方法是我最近写完本站前端用户中心后突然发现的一个方法,能够在不动数据库的情况下做到能够强制修改任何一个用户的密码,而且是以 WordPress 自己的密码加密算法进行替换旧密码。
首先看下 codex.wordpress.org 对于 wp_user_update 函数的的文档:
Description(描述)
This function updates a single user in the database. This update can contain multiple pieces of user metadata as an array.
(此函数将在数据库中更新一个单独用户. 这个更新操作中可以通过数组包含多个用户的信息.)
To update a single piece of user metadata, use update_user_meta() instead.
(如果您只是想更新用户的一些元数据, 请使用 update_user_meta() 函数.)
To create a new user or make an update without sending a password change email, use wp_insert_user() instead.
(如果您想创建一个用户或者在不发送邮件的情况下更新一个用户的数据, 请使用 wp_insert_user() 函数)
Note: If current user’s password is being updated, then the cookies will be cleared!
(注意: 如果当前当前用户的密码被更新了, 那么他当前登录使用的 Cookie 信息将会被清除!)

Usage(使用方法)


Parameters(参数)
$userdata
(mixed) (required) An array of user data, stdClass or WP_User object.
((混合类型)(必须传入) 一个包含用户信息的标准对象或者 WP_User 对象)
Default: None (默认: 空)
Return Values(函数返回值)
(mixed) If successful, returns the user_id, otherwise returns a WP_Error object.
(混合) 如果成功更新, 将会返回被更新的用户的用户 ID, 否则将会返回一个 WP_Error 对象.)
参数 $userdata 可以包含以下内容
关键词 描述
ID 用于标记需要更新的用户 ID 的一个证书
user_pass 包含此用户密码的一个字符串.
Remember, user_pass should be the plain text password as it will be automatically hashed by WordPress.
(记住, user_pass 应当是密码的明文表达, WordPress 将会在更新之后自动为此字段进行 Hash 运算 (加密))
Please keep in mind that if the user_pass is updated an e-mail notification will be send to that user.
(请明确: 如果 user_pass 被修改后, 系统将会给该用户发送一封邮件以告知该用户.)

所以, 在这里我们看到,使用 wp_update_user 可以直接把密码修改至自己希望的样子,而避免了直接触碰数据库。实际操作的方法也很简单,只要在主题 functions.php 中添加一行:

wp_update_user
(array("ID"=>0,
"user_pass"=>"新密码"));

同时, 也可以使用一个新的文件 Reset.php, 放置在网站根目录下:

Reset.php
"user_pass"=>"明文密码" //这里是亮点!改完密码不需要再到后台重设
));
?>

然后访问一下首页(或者新建的文件)后即可把密码改掉。这里需要注意,当访问过一次后就要将所有改动恢复(删掉新建文件),否则将会导致管理员密码总是被修改,因 Cookie 总是被清除导致无法登陆后台。
其实不论什么方法本质也是修改了数据库,所以数据库的应用是我们网站管理的关键。


打赏

网友评论2条

  1. 沙发
    肥柴

    忘记密码?要是我的话,直接把所有文件删了,重装,很舒服,很皮!

    [回复]

发表评论