织梦dedecms使用Mysql8.0无法登录后台的解决办法_

作者 : 叶 落风前 本文共1371个字,预计阅读时间需要4分钟 发布时间: 2020-06-8 共67人阅读

今天一个客户联系我们的技术,反馈说安装之后,但是登录后台,一直提示用户名不存在。通常这个原因有两个(1、数据库链接信息不对  2、数据库表中的用户名不是默认的admin,被修改过)经过多发查证,这两个原因都被排除了,最后发现原来这位客户用的是mysql8.0的数据库。

因mysql 8.0新制定的语句表名限制条件被dede自带的后台用户登录检查语句指定表别名所违背而引起的bug。如何解决呢?

 

找到dedecms的文件目录, 在include子目录下找到userlogin.class.php, 249行左右看到如下语句:

 

1
//只允许用户名和密码用0-9,a-z,A-Z,'@','_','.','-'这些字符
2
$this->userName = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $username);
3
$this->userPwd = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $userpwd);
4
$pwd = substr(md5($this->userPwd), 5, 20);
5

6
$dsql->SetQuery("SELECT admin.*,atype.purviews FROM `dede_admin` admin LEFT JOIN `dede_admintype` atype ON atype.rank=admin.usertype WHERE admin.userid LIKE '".$this->userName."' LIMIT 0,1");
7
$dsql->Execute();
8
$row = $dsql->GetObject();

 

其中SetQuery就是设定将要执行的sql语句, 下一行Execute()来执行这个设定好语句,我们从语句里面改。改成如下:

 

1
//只允许用户名和密码用0-9,a-z,A-Z,'@','_','.','-'这些字符
2
$this->userName = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $username);
3
$this->userPwd = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $userpwd);
4
$pwd = substr(md5($this->userPwd), 5, 20);
5

6
$dsql->SetQuery("SELECT admi.*,atype.purviews FROM `dede_admin` admi LEFT JOIN `dede_admintype` atype ON atype.rank=admi.usertype WHERE admi.userid LIKE '".$this->userName."' LIMIT 0,1");
7
$dsql->Execute();
8
$row = $dsql->GetObject();

 

这样一来,表的别名从admin删去一个n被改成admi, 就可以正常登录后台了。

 

 

 

完整源码网ym0.cc,专业提供制网站源码,网站模板,源码下载,商业源码,游戏源码,找源码就到完整源码网 免责声明:本站所提供的资源来自于网络,版权争议与本站无关,版权归原创者所有! 仅限用于学习和研究目的,不得将上述内容资源用于商业或者非法用途. 否则,一切后果请用户自负。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源。如果上述内容资对您的版权或者利益造成损害,请提供相应的资质证明,我们将于3个工作日内予以删除。 本站不保证所提供下载的资源的准确性、安全性和完整性,源码仅供下载学习之用! 如用于商业或者非法用途,与本站无关,一切后果请用户自负! 本站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 如有侵权、不妥之处,请联系站长以便删除。 敬请谅解!侵权/投稿邮箱:157529987@qq.com!
完整源码网-ym0.cc » 织梦dedecms使用Mysql8.0无法登录后台的解决办法_

常见问题FAQ

开通VIP的好处?
VIP会员根据等级在相应的有效期内享有本站所有资源免费下载资源的权力,免费查看隐藏内容的权力,免费查看视频的权力,同时本站商品还会获得打折价格,并且拥有其他特殊的权力。
完整源码支持最新版本吗?
完整源码网支持永久更新!

发表评论