天天看點

程式設計小白安裝織夢背景使用者名不存在被卡n天後

算是程式設計小白,雖然大學學了c,彙編,但已經十幾年完全沒碰這些東西,而且大學學得也很一般,現在想重新撿起來,隻是想能平心靜氣的專注在一件事上,程式設計很容易心無旁骛,也很容易有成就感。

       說回正題,一直是自己看網絡視訊自學,學的很慢,然後想下個現成的找找感覺,于是下了織夢,安裝很簡單,本地安裝的,然後就沒有然後了,登入背景,就卡住了,一直顯示使用者名不存在,百度了n次,都沒找到自己想要的答案,自己隻是剛在本地安裝就顯示使用者名不存在,網上的所謂注入,使用者名密碼被改都跟自己的狀況不符,但是也知道了一些東西,開始翻看各種自己覺得相關的檔案,自己配置的本地環境是php7.2, apache2.4,mysql8.0.11, 心想難道mysql版本太高?可是又不想重新配置。userlogin.class.php,login.php,dedesqli.class.php這仨檔案是看得最多的,看懂了一部分,也還有很多不懂,嘗試在覺得可疑的地方加輸出看結果,然而沒什麼結果,最後看到mysqli報警檔案,

Page: /dedecms/qx/login.php

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'admin.*,atype.purviews FROM `dede_admin` admin LEFT JOIN `dede_admintype` atype ' at line 1 <br />Error sql: <font color='red'>SELECT admin.*,atype.purviews FROM `dede_admin` admin LEFT JOIN `dede_admintype` atype ON atype.rank=admin.usertype WHERE admin.userid LIKE 'admin' LIMIT 0,1</font>

把問題鎖定在userlogin.class.php中的那句select查詢上,

$dsql->SetQuery("SELECT admin.*,atype.purviews FROM #@__admin admin LEFT JOIN #@__admintype atype ON atype.rank=admin.usertype WHERE admin.userid LIKE '".$this->userName."' LIMIT 0,1");

直接上的mysql官網看手冊,滿篇的英語看得頭大,也沒看進去,然後就是一點點試,自己開始把這句直接摘出來在zend studio上做查詢,最後去掉dede_admin 跟dede_admintype的單引号,就可以有結果,可是改了之後織夢背景還是使用者名不存在,mysqli的報警也還在,剛開始在zend studio上做這句查詢的時候其實對這句話也不是很懂,然後開始各種查left join用法。懂了大概意思之後,直接cmd打開的mysql,把這句話從主幹一點點的往上加子句,最終把dede_admin, dede_admintype的區分注釋admin, atype改了,我終于不用見到使用者名不存在這句話,可話說我還是不太明白是為什麼,但解決了個問題,終于看到了下面的畫面。

程式設計小白安裝織夢背景使用者名不存在被卡n天後

       總結,其實是做表格分類注釋的admin需要添加``變成`admin`就可

後來因為其他原因,mysql降級,織夢安裝順利,是以還是版本比對問題......