11
回答
discuz在数据库里插入指定UID的用户,前台却无法登陆 什么原因..

这就是插入用户时的界面 是不是密码那个栏还要选择个函数 我以前是没有选择 用密码在前台登陆不行 进不去 !希望高手给解决一下....谢谢.......

举报
BlackHorse
发帖于8年前 11回/3K+阅
共有11个答案 最后回答: 8年前

我想告诉你,要搞清楚这个问题,最好的办法就是先看看uc_client里说的一个用户添加的办法。

当然,你如果想在phpmyadmin这样的数据管理软件里添加用户,我想说说dz的用户登陆验证过程:

discuz6以后的所有版本,如d7.0-d7.2,虽然discuz里都有一个用户表members,但实际的登陆过程是建立在ucenter的基础上的,(如果你安装d7.0--,它会问你是不已经安装center,设定ucenter,否则是不能安装的)。

所以,ucenter里有一也有一个用户表,如果ucenter和discuz整合安装,就里cdb_uc_members这个表,这个表的用户数据就是discuz的反映。

它门有什么关系呢?这要从comsenz的产品结构说起,comsenz的所以产品都是建料在ucenter的,所有的用户数据都是ucenter管理的,如一个大型的站点:有bbs,社区,游戏应用,blog,supesite都就是comsenz的产品,它们为了统一登陆,所以就以ucenter为中心管理登接口,再同步到不同的应用。

discuz的用户数据是这样的:

cdb_members的密码:$password = md5('实际密码的明码');

ucenter的用户数据是这样:

cdb_uc_members的密码:

$salt = rand(100000, 999999);
$password = md5(md5('实际密码的明码'').$salt);

注:cdb_uc_members表里有个salt这个字段,一定要记录密码从discuz到ucenter加密里的salt,否则不能登陆。

discuz和ucenter用户名一一对应,它们的功能有不同。

先说一下注册的过程:在各个应用中(supesite,uchome,discuze)注册,先把用户名,密码,email记录cdb_members,再记录在cdb_uc_member这个表中。

如果你从discuz的界面上登陆,先从ucenter(在discuz里登陆实际也是调用ucenter),检验用户密码,如果通过,再检验discuz中的用户密码。

这两个用户的职责是不同的:ucenter的uc_members主要是负责登陆,discuz的members表主要是负责记录用户在论坛里的发帖,积分,等行为的记录。

discuz 现在密码都是2次加密的吧,后面还有salt的字段是做二次加密用的。

没仔细看过程序,不过形式类似应该是  对设定的密码进行32位md5后,字段再加上salt字段再加密了一次 。

另外你要注意有两个表  一个是members另外还有一个是uc_members

管理员---后台---工具---数据库---升级

INSERT INTO cdb_members(uid, username, password,email)
                          VALUES ('8888','testname','testpassword','test@test.com')
用这个方法也能添加用户 可是就是登陆密码不正确!!!不知道能否给解释一下为什么!!xiexie 。。

2楼已经解释清楚了, 因为国内的网络生态环境,密码不是简单的md5加密就可以了,通常是要2次加密,第二次会需要一个额外的字符串salt, 这个salt在安装discuz时会要求输入。所以楼主简单的插入 username password, 那是肯定不能在前台登录的。 楼主应该在网上搜索一下先, 对discuz的加密及登录的讨论网上已经有很多。

我在使用discuz nt的时候也遇到过这个问题,

首先是密码的加密问题,nt可以使用论坛自带的api来进行用户添加,该api主要是用来跟其他系统整合用的;

其次,在discuz nt的数据库中,跟用户关联的有2个表,dnt_user和dnt_userfields表,用户基本数据插入dnt_user表,扩展数据插入dnt_userfields表,如果仅仅将基本数据插入dnt_user,即使密码正确也登陆不了,必需将这2表都插入UID相同的数据才能登陆成功。

引用来自#8楼“杨金焕”的帖子

我想告诉你,要搞清楚这个问题,最好的办法就是先看看uc_client里说的一个用户添加的办法。

当然,你如果想在phpmyadmin这样的数据管理软件里添加用户,我想说说dz的用户登陆验证过程:

discuz6以后的所有版本,如d7.0-d7.2,虽然discuz里都有一个用户表members,但实际的登陆过程是建立在ucenter的基础上的,(如果你安装d7.0--,它会问你是不已经安装center,设定ucenter,否则是不能安装的)。

所以,ucenter里有一也有一个用户表,如果ucenter和discuz整合安装,就里cdb_uc_members这个表,这个表的用户数据就是discuz的反映。

它门有什么关系呢?这要从comsenz的产品结构说起,comsenz的所以产品都是建料在ucenter的,所有的用户数据都是ucenter管理的,如一个大型的站点:有bbs,社区,游戏应用,blog,supesite都就是comsenz的产品,它们为了统一登陆,所以就以ucenter为中心管理登接口,再同步到不同的应用。

discuz的用户数据是这样的:

cdb_members的密码:$password = md5('实际密码的明码');

ucenter的用户数据是这样:

cdb_uc_members的密码:

$salt = rand(100000, 999999);
$password = md5(md5('实际密码的明码'').$salt);

注:cdb_uc_members表里有个salt这个字段,一定要记录密码从discuz到ucenter加密里的salt,否则不能登陆。

discuz和ucenter用户名一一对应,它们的功能有不同。

先说一下注册的过程:在各个应用中(supesite,uchome,discuze)注册,先把用户名,密码,email记录cdb_members,再记录在cdb_uc_member这个表中。

如果你从discuz的界面上登陆,先从ucenter(在discuz里登陆实际也是调用ucenter),检验用户密码,如果通过,再检验discuz中的用户密码。

这两个用户的职责是不同的:ucenter的uc_members主要是负责登陆,discuz的members表主要是负责记录用户在论坛里的发帖,积分,等行为的记录。

en !非常感谢!!问题解决了...在数据库里添加用户时 那个密码必须填写加密后的密码!而加密方式就是你说的那个样子md5(md5(明码)$salt  太好了!这个问题我都整了两天了 今天晚上终于明白了 ...再问一个吧 你知道有没有那些软件或网站能实现md5(md5(明码)$salt这种加密功能!?我怎么没找到..

引用来自#5楼“阿笨哥”的帖子

用管理员在界面修改一下密码就OK

这个方法好像不大管用 我尝试来 不行  最终解决方案就是10喽那个了  感谢您的回复......

顶部