花魁直播高品质美女在线视频互动社区 - 花魁直播官方版

 歡迎來到素材無憂網(wǎng),按 + 收藏我們
登錄 注冊 退出 找回密碼

織夢dedecms使用Mysql8.0無法登錄后臺的解決辦法

時(shí)間: 2019-05-13 10:06 閱讀: 作者:素材無憂網(wǎng)

今天一個(gè)客戶聯(lián)系我們的技術(shù),反饋說安裝之后,但是登錄后臺,一直提示用戶名不存在。通常這個(gè)原因有兩個(gè)(1、數(shù)據(jù)庫鏈接信息不對  2、數(shù)據(jù)庫表中的用戶名不是默認(rèn)的admin,被修改過)經(jīng)過多發(fā)查證,這兩個(gè)原因都被排除了,最后發(fā)現(xiàn)原來這位客戶用的是mysql8.0的數(shù)據(jù)庫。

因mysql 8.0新制定的語句表名限制條件被dede自帶的后臺用戶登錄檢查語句指定表別名所違背而引起的bug。如何解決呢?
  找到dedecms的文件目錄, 在include子目錄下找到userlogin.class.php, 249行左右看到如下語句:  
        //只允許用戶名和密碼用0-9,a-z,A-Z,'@','_','.','-'這些字符
        $this->userName = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $username);
        $this->userPwd = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $userpwd);
        $pwd = substr(md5($this->userPwd), 5, 20);

        $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");
        $dsql->Execute();
        $row = $dsql->GetObject();
  其中SetQuery就是設(shè)定將要執(zhí)行的sql語句, 下一行Execute()來執(zhí)行這個(gè)設(shè)定好語句,我們從語句里面改。改成如下:  
        //只允許用戶名和密碼用0-9,a-z,A-Z,'@','_','.','-'這些字符
        $this->userName = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $username);
        $this->userPwd = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $userpwd);
        $pwd = substr(md5($this->userPwd), 5, 20);

        $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");
        $dsql->Execute();
        $row = $dsql->GetObject();
  這樣一來,表的別名從admin刪去一個(gè)n被改成admi, 就可以正常登錄后臺了。

版權(quán)聲明: 本站資源均來自互聯(lián)網(wǎng)或會員發(fā)布,如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除!謝謝!

轉(zhuǎn)載請注明: 織夢dedecms使用Mysql8.0無法登錄后臺的解決辦法

模板推薦