编程小白安装织梦后台用户名不存在被卡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`就可