ThinkPHP系统后台密码忘记解决方法

现在国内很多PHP网站源码都是用ThinkPHP开发的后台,大家经常会碰到密码忘记或者拿来的代码忘了带上后台账号,这种情况下账号名可以从数据库获取,但是密码是加过密的,所以行不通,得从后台登录代码里面找到密码匹配判断语句,这里有两种处理方法:

1)直接返回true,这样无论输入啥密码都可以登录后台,登录以后恢复代码,然后在后台修改密码;

2)在密码匹配判断处用调试的方法输出用函数加密过的密码值,只要输入任意密码,比如12345,在判断语句处就会输出12345的加密密码,然后将这个密码填入到数据库里面admin账号对应的密码字段就可以了,登录密码就是12345;

前面第一种方法有个不足的地方,就是在后台改密码如果要验证旧密码,这种方法就行不通,下面重点介绍第二种方法。

首先安装emeditor文本编辑器,然后在点击源码文件夹,右键菜单中点击“用Emeditor在文件中查找”

弹出的查找框中输入“密码错误”(就是输入密码弹出的错误提示),点击“查找”,然后会出现密码错误出现过的文件和位置:

既然是要后台登录的密码,那找到关键词admin和login,上图中密码判断语句就在admin\controller\LoginController.class.php中了,在该文件中出现过三次,逐一检查,找到了语句所在函数:

public function index($username = NULL, $password = NULL, $verify = NULL, $urlkey = NULL)
	{
		if (IS_POST) {
			if (!check_verify($verify)) {
				$this->error('验证码输入错误!');
			}

			$admin = M('Admin')->where(array('username' => $username))->find();

			if ($admin['password'] != md5($password)) {
				$this->error('用户名或密码错误!');
			} else {
				$uids = $admin['id'];
				$admin_auth = M('AuthGroupAccess')->where(array('uid' => $uids))->find();
				if(!$admin_auth){
					$this->error('用户暂未分组!');
				}

				$group_id = $admin_auth['group_id'];
				$admin_gid = M('AuthGroup')->where(array('id' => $group_id))->find();
				if(!$admin_gid){
					$this->error('用户所在分组不存在!');
				}
				
				M('Admin')->where(array('username' => $username))->save(array('last_login_time' => time(), 'last_login_ip' => get_client_ip()));
				
				session('admin_id', $admin['id']);
				S('5df4g5dsh8shnfsf', $admin['id']);
				session('admin_username', $admin['username']);
				session('admin_password', $admin['password']);
				$this->success('登陆成功!', U('Index/index'));
			}
		} else {
			defined('ADMIN_KEY') || define('ADMIN_KEY', '');

			if (ADMIN_KEY && ($urlkey != ADMIN_KEY)) {
				//$this->redirect('Home/Index/index');
			}
			if (session('admin_id')) {
				$this->redirect('Admin/Index/index');
			}

			$this->display();
		}
	}

if ($admin['password'] != md5($password))这条语句就是判断密码是否匹配的了,可以看出密码是MD5加密存储的,这个就好办了,直接在数据库密码字段里输入md5加密后的密文,如果这里不是md加密,可能是别的函数,比如encryptxxx($password),那就要在这条判断语句前输出encryptxxx($password)的返回值,这里方法很多,我使用的是:

die(encryptxxx($password));
—————— 展开浏览全文 ——————
· THE END ·
版权免责声明 01、本站名称:资源e站
02、本站网址:https://www.zye.cc
03、本站所有资源来源于互联网搜集并整理,如有侵权请联系站长进行删除!
04、本站分享的资源仅供参考学习,您必须在下载后二十四个小时之内删除!
05、本站分享目的仅供学习研究和借鉴,请不要用于商业用途以及违法用途!
06、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
07、禁止用本站源码用于非法商业用途,不得违反国家法律,否则后果自负!
08、如发现资源链接无法下载、失效或广告,请联系管理员或提交工单处理!
09、所有资源均可通过日常签到等任务进行免费兑换,记得每天到本站签到!
10、本站所有资源积分兑换只是赞助,收取费用仅维持本站的日常运营所需!
11、如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励!
12、如需商用请购买正版,由于未及时购买正版发生侵权行为,与本站无关!
13、如果您发现本站分享的资源侵犯了您的权益,请邮件联系我们进行删除!
14、我们无法辨别该内容是否具有版权,若侵犯了您的权益请联系我们删除!
15、本站禁止以任何方式发布或转载任何违法相关信息,发现请向站长举报!
16、本站所有资源不代表本站立场,并不代表赞同其观点和对其真实性负责!
17、本站资源大多存储在云盘,如发现链接失效,请联系我们第一时间更新!
0
分享海报
E站十周年庆,升级(终身VIP)只需188元,原价288元,限时特惠,即将终止! 点击开通
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录