WordPress忘记密码之后的解决方案
在Wordpress吧里经常看到有吧友非常粗心,安装完Wordpress之后就设定了自动登录,一直都能够在不输入密码的情况下登录,直到某天使用某零或者某管家不小心把浏览器中的Cookie(用于标记客户端的一种标识)全部给清掉了,在其他网站登录信息丢失的同时,发现自己的站也需要输入当时安装Wordpress时输入的密码,然而这时候距离自己建站第一次登录已经过去了相当长的一段时间,再回忆起来已经不太现实了,于是只能通过一定的技术手段来找回密码。今天我就在这里来系统性的总结下几种解决方案。
1.使用系统自带的找回密码功能
这个功能位于登录页面的下方,直接点击输入当时输入的管理员邮箱,使Wordpress将密码重置连接发送到自己的邮箱。
这种方法适用于主机可以发送邮件的情况,无论是通过mail()函数发送亦或者是SMTP代发都可以实现。
2.重装Wordpress
这个方法是最简单粗暴的,清空数据库之后任何关于网站的信息都会丢失,包括密码信息。所以这种方法也是最不推荐的。
3.改数据库
根据网上的方法,将自己管理员的密码user_pass字段改为”5d41402abc4b2a76b9719d911017c592″,即可将密码重置为hello,之后我们就又能登录进去了。当然,这个字符串是md5加密过的’hello’,在更改数据的时候,也可以使用MySQL的内建函数MD5()来生成一个密码:
Update wp_users Set user_pass=MD5('新密码') where user_login='登录名';
但是这种方法也有一个弊端,对于一些不懂数据库。不懂代码的人对于这种操作也是很容易失误的,所以也不是最完美的一个方式。
4.使用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(使用方法)
<?php wp_update_user($userdata); ?>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"=>1,"user_pass"=>"新密码"));
同时,也可以使用一个新的文件Reset.php,放置在网站根目录下:
<?php include("wp-load.php"); wp_update_user(array( "ID"=>1, //管理用户的ID,作为第一个登陆后台的用户,应该会是1,具体可以查数据库 "user_pass"=>"明文密码" //这里是亮点!改完密码不需要再到后台重设 )); ?>
然后访问一下首页(或者新建的文件)后即可把密码改掉。这里需要注意,当访问过一次后就要将所有改动恢复(删掉新建文件),否则将会导致管理员密码总是被修改,因Cookie总是被清除导致无法登陆后台。
总而言之,不管是哪种方法,最终都是修改了数据库中的wp_user表,只是有些方法会显得文艺一些…
你用的这个代码高亮插件就比较好看,用的是什么?
本站当前的代码高亮插件是SyntaxHighlighter Evolved,只装这个效果一般,对代码高亮框加些样式就是现在这个样子了。