DISCUZ——后台管理密码ko方案

本文详细介绍了Discuz!论坛软件中用户密码的存储位置及加密方式,并提供了修改密码的具体步骤。

一、Discuz!的管理员(用户)密码存在哪里?

 

要想修改或找回密码,我们要明白他的密码存在哪里。自从UCenter诞生以来,所有要通过它实现数据同步的产品(如:Discuz!UCHome,SS等等),用户信息都存在了UCenter的数据库里的_members表中,而非产品自身的数据库里。拿DZ来说,在DZ的数据库中同样有_members表(pre_ucenter_members),同样会有密码字段,但实际上,存在DZ数据库里的密码是一组随机产生的数字,经过MD5加密后存入的。在注册时用户输入的密码及相关信息都是通过UC的接口 uc_user_register 传递到UCenter下进行操作的。 同样,在用户登录的时候也是通过UC提供的接口来传递数据的,经过UC的处理级验证,将信息返回给应用端(Discuz!)。

PS:1、register.php 注册处理文件。大约在206行处调用了uc_user_register 接口,注册成功返回用户的uid。
2、uc_user_register 接口函数是在文件 uc_client/client.php 文件下定义的。

 

二、修改密码

先来了解一下加密方式。如下代码(UC下module/user.php 大约在107行处):
$salt = substr(uniqid(rand()), -6);
$password = md5(md5($password).$salt);

$salt是一个根据当时的时间戳产生的一个不重复的随机码(uniqid函数),并用substr进行截取的字符串,这就是数据库中 _members表里'salt'字段存的值。
加密的过程就是先将用户的密码md5加密,再与生成的$salt字符串拼接,最后再用一次md5加密才能生成存在UC下,真正的用户密码。

了解到此,对于修改管理员(用户)密码应该有了一个大概的思路。所以,接下来就是修改密码的时刻。
1、在服务器上新建一个 PHP 脚本文件。
2、复制UC数据库里 _members 表里admin记录的'salt'值赋值给变量$salt。
3、定义$password变量,赋值为新密码。

4、将使用$password = md5(md5($password).$salt);再次加密后的值,覆盖原来password的值即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡德咏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值