dedecms数据库数据不小心被我还原了,导致后台都不能登录,直接显示“你的用户名不存在”

dedecms数据库数据不小心被我还原了,导致后台都不能登录,直接显示“你的用户名不存在”,第1张

具体方法如下:

1、DedeCMS默认风格里,顶部左边有一段话"织梦CMS - 轻松建站从此开始!",很多朋友想把这段话修改成一个横向登录框,像织梦吧(dedecms8com)顶部一样。

2、打开头部公用模板文件templets/default/headhtm,找到如下汉字:

3、把上图里汉字,替换为如下代码:

<div id="_userlogin">

<form name="userlogin" action="{dede:globalcfg_memberurl/}/index_dophp" method="POST">

<input type="hidden" name="dopost" value="login" />

<span>用户名:</span>

<input type="text" name="userid" size="10" class="ipt-txt" />

<span>密码:</span>

<input type="密码" name="pwd" size="10" class="ipt-txt" />

{dede:php}

if(preg_match("#2#", $safe_gdopen)){

echo '

<span>验证码:</span>

<input type="text" name="vdcode" size="8" class="ipt-txt" />

<img id="vdimgck" align="absmiddle" style="cursor:pointer;margin-left:0px;text-transform:uppercase;" alt="看不清?点击更换" src="'$cfg_cmspath'/include/vdimgckphp"/>';}

{/dede:php}

<button type="submit" class="btn-1">登录</button>

<a href="{dede:globalcfg_memberurl/}/index_dophpfmdo=user&dopost=regnew" >注册账号</a> <a href="{dede:globalcfg_memberurl/}/reset密码php">忘记密码</a>

</form>

</div>

<script language="javascript" type="text/javascript">CheckLogin();</script>

  改后:

4、其实仅仅这段代码还不够,还需要完成下一步才能达到效果:

那么,我这里为什么没有加这段代码呢这是因为默认主页模板文件indexhtm里,已经包涵了这段代码。如果没有,或被自己删除了,请添加在indexhtm里之前。

打开member/ajax_loginstaphp文件,找到如下代码

5、上图红色框内的代码,即为登录成功后,返回用户信息。多数时候,我们的顶部导航没太宽的地方,以显示这些数据,所有完全没必要全部返回这些信息,可以适当减少几项,并且对div做美化,以达到美观体验。这里,简单做下调整,如下:

6、更新生成后,可以看到如下效果:

这样一个顶部横向登录框就制作完了。

楼主你好

你上面的logophp应该是写错了,dedecms有三个登录处理程序文件,前台的有 index_dophp 和 loginphp,不过l oginphp 没有处理数据,仅判断是否登录,登录的话跳转到会员中心首页。后台的有 loginphp 来处理。下面详细说明:

前台 index_dophp 文件。首先不论用户是在网站首页右侧的登录框登录还是会员中心的登录页面登录,两者都会把参数传到  /member/index_dophp 文件中,从登录模板的 action 中我们可以看到登录的时候会把表单数据传递到哪个文件来处理。如下图:

上图是位于/member/templets/loginhtm文件中的部分截图,这是我们前台登录的模板页面,可以看到<form>中将参数传给了index_dophp文件,具体传的参数是每个表单(input)的name值,比如用户名的表单是<input id="txtUsername" class="text login_from" type="text" name="userid"/> ,通过对name的判断知道这个表单提交的是用户名,也就是userid的值,数据库会有对应的userid的字段。比如你登录的用户名是:林羽凡,传过去(到index_dophp)的值就是“userid='林羽凡'”。

type="hidden"的是隐藏域,也就是不在页面上显示,但系统仍能传递参数。比如<input type="hidden" name="fmdo" value="login">就是传递 fmdo的值是 login,这样index_dophp就会知道这里传来的值是用于登录处理的,会有对应的函数(funtion)来处理。

dedecms的$dopost很诡异,通过这个参数的值判断是登入还是登出。

通过以上,我们还有一个登录按钮,类型是submit,也就是提交,这样表单form中的所有信息才会传递到index_dophp文件。

在/member/index_dophp文件240行就可以看到function login()了,也就是登录处理函数,这个时候这个函数就会把传递过来的参数统统接收,这里也是最容易进行sql注入的地方,如果对表单过滤不好,很容易把sql语句写到处理文件中,这里就不细说了。

index_dophp的大概处理过程是这样的,可参考下,不一定每一条都说到。

1、判断是否设置验证码,如果没有,进行用户名验证,如果有设置看对不对,不对的话提示跳转到indexphp文件,如果对,就进行用户名验证。

2、if(CheckUserID($userid,'',false)!='ok')就是通过CheckUserID()来检查用户是否合法,主要是指是不是系统禁用名,是不是长度不够等等,具体语法就不解释了。

3、看你密码是不是空的。

4、接下来就是最重要的,看你的用户名和密码匹配不匹配。$rs = $cfg_ml->CheckUser($userid,$pwd);  dedecms这里的验证有点繁琐,还加入了UC机制,就不详细说了。

总结下:说得有点啰嗦,但希望楼主能明白大概的流程,后台的登录传参原理也一样,也是通过<input>把值传到 loginphp 文件,再有对应的函数处理。我们通过传参都会用post方法,也就是你在代码中看到的 method='POST',还有一种是 Get 方式,两种有区别,主要是 post 可传的字节比 get多。

希望可以帮到你。  林羽凡

进数据库添加一个账号和密码 dede_admin表

pwd:c3949ba59abbe56e057f   是123456加密后的字符串,你登陆时的密码就是123456,用户名是admin1,可以自己定义

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » dedecms数据库数据不小心被我还原了,导致后台都不能登录,直接显示“你的用户名不存在”

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情