欢迎来到六久阁织梦模板网!
织梦实现在网站顶部显示会员登录信息

织梦实现在网站顶部显示会员登录信息

浏览次数: 0

作者: 六久阁织梦模板网

信息来源: 六久阁

更新日期: 2018-04-13

文章简介

一、需求描述 dedeCMS 自带的模板中有互动中心模块,如下图所示: 由于会员登陆对我来说不是网站的重要模块且默认 DedeCMS 的会员中心模块的初始化很慢,常会显示“正在载入中,请稍候。。。”, 所以不想让它出现在首页上,而是想在顶层 banner 中显示自定

  • 正文开始
  • 热门文章

一、需求描述

dedeCMS自带的模板中有互动中心模块,如下图所示:

 织梦实现在网站顶部显示会员登录信息

由于会员登陆对我来说不是网站的重要模块且默认DedeCMS的会员中心模块的初始化很慢,常会显示“正在载入中,请稍候。。。”,

所以不想让它出现在首页上,而是想在顶层banner中显示自定义登录信息,如下图所示:

 织梦实现在网站顶部显示会员登录信息


二、原理分析

我们来分析一下DedeCSM自带的模板是怎么实现会员中心及登录信息显示的内容的:

1index.htm中定义了用户名密码模块:

<dd id="uc_member" > 
     <div id="_userlogin"> 
      <div> 
       <form name="userlogin" action="{dede:global.cfg_memberurl/}/index_do.php" method="POST"> 
        <input type="hidden" name="fmdo" value="login" /> 
        <input type="hidden" name="dopost" value="login" /> 
        <input type="hidden" name="keeptime" value="604800" /> 
        <div><span>用户名:</span> 
         <input type="text" name="userid" size="20" /> 
        </div> 
        <div><span>密码:</span> 
         <input type="password" name="pwd" size="20" /> 
        </div> 
        {dede:php} 
        if(preg_match("#2#", $safe_gdopen)) 
        { 
        echo ' 
        <div><span>验证码:</span> 
         <input type="text" name="vdcode" size="8" /> 
         <img id="vdimgck" onClick="this.src=this.src+\'?\'" style="cursor:pointer;margin-left:0px;text-transform:uppercase;" alt="看不清?点击更换" src="'.$cfg_cmspath.'/include/vdimgck.php"/></div> 
        '; 
        } 
        {/dede:php} 
        <div> 
         <button type="submit">登录</button> 
         <a href="{dede:global.cfg_memberurl/}/index_do.php?fmdo=user&dopost=regnew" >注册帐号</a> <a href="{dede:global.cfg_memberurl/}/resetpassword.php">忘记密码?</a> </div> 
       </form> 
      </div> 
     </div> 
     <!-- /userlogin --> 
     <script language="javascript" type="text/javascript">CheckLogin();</script> 
     <div> <strong>最近登陆的会员</strong> 
      <ul> 
       {dede:memberlist row=6 signlen=30} 
       <li><a href="[field:spaceurl/]" target="_blank"><img src="[field:face/]" alt='[field:spacename/]' width="52" height="52" />[field:uname/]</a></li> 
       {/dede:memberlist} 
      </ul> 
     </div> 
     <!-- /latestlogin --> 
    </dd>

 

从以上代码可以看出它只是显示一个界面而与,那么当我们输入用户名、密码,点登录后是怎么变为如下的结果呢:

2、在上面的代码中点了登录按钮后,由于没有指定buttononclick响应函数,所以默认submit会有一个跳转,页面会刷新。

当页面刷新时,就把index.htmHTML再次执行一次。在上面代码的下面有这么一行代码:

<!-- /userlogin --> 

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

 

3、我们来看CheckLogin()的定义,它出现在index.htmhead区:

<link href="{dede:global.cfg_templets_skin/}/style/dedecms.css" rel="stylesheet" media="screen" type="text/css" /> 
<script language="javascript" type="text/javascript" src="{dede:global.cfg_cmsurl/}/include/dedeajax2.js"></script> 
<script language="javascript" type="text/javascript" src="{dede:global.cfg_cmspath/}/images/js/j.js" ></script> 
<script language="javascript" type="text/javascript" src="{dede:global.cfg_templets_skin/}/js/pic_scroll.js"></script> 
<script language="javascript" type="text/javascript">  
<!-- 
    $(function(){ 
        $("a[_for]").mouseover(function(){ 
            $(this).parents().children("a[_for]").removeClass("thisclass").parents().children("dd").hide(); 
            $(this).addClass("thisclass").blur(); 
            $("#"+$(this).attr("_for")).show(); 
        }); 
        $("a[_for=uc_member]").mouseover(); 
        $("a[_for=flink_1]").mouseover(); 
    }); 
     
    function CheckLogin(){ 
      var taget_obj = document.getElementById('_userlogin'); 
      myajax = new DedeAjax(taget_obj,false,false,'','',''); 
      myajax.SendGet2("{dede:global.cfg_cmspath/}/member/ajax_loginsta.php"); 
      DedeXHTTP = null; 
    } 
--> 
</script>

CheckLogin()首先获得id'_userlogin'的网页元素,其实这个元素就是我们的用户名密码登录模块;

然后调用DedeAjax函数,这个函数定义在{dede:global.cfg_cmsurl/}/include/dedeajax2.js文件(所以在前面引入了引javascript文件)

//gcontainer 是保存下载完成的内容的容器 

//mShowError 是否提示错误信息 

//DedeShowWait 是否提示等待信息 

//mErrCon 服务器返回什么字符串视为错误 

//mErrDisplay 发生错误时显示的信息 

//mWaitDisplay 等待时提示信息 

//默认调用 DedeAjax('divid',false,false,'','','') 

function DedeAjax(gcontainer,mShowError,mShowWait,mErrCon,mErrDisplay,mWaitDisplay) 

 

//GET方式发送数据,阻塞模式 

this.SendGet2 = function(purl) { 

 

从以上我们知道为什么能显示登录结果的原因了:

通过调用通讯模块dedeajax2.js的功能根据{dede:global.cfg_cmspath/}/member/ajax_loginsta.php返回结果网页代码,然后在id"_userlogin'"的地方显示。

 

ajax_loginsta.php的一部分代码如下:

require_once(dirname(__FILE__)."/config.php"); 
AjaxHead(); 
if($myurl == '') exit(''); 
$uid  = $cfg_ml->M_LoginID; 
 
!$cfg_ml->fields['face'] && $face = ($cfg_ml->fields['sex'] == '女')? 'dfgirl' : 'dfboy'; 
$facepic = empty($face)? $cfg_ml->fields['face'] : $GLOBALS['cfg_memberurl'].'/templets/images/'.$face.'.png'; 
?> 
<div> 
    <div>你好:<strong><?php echo $cfg_ml->M_UserName; ?></strong>,欢迎登录 </div> 
    <div> 
        <a href="<?php echo $cfg_memberurl; ?>/index.php"><img src="<?php echo $facepic;?>" width="52" height="52" /></a> 
    </div> 
    <div> 
        <ul> 
            <li><a href="<?php echo $cfg_memberurl; ?>/guestbook_admin.php">我的留言</a></li> 
            <li><a href="<?php echo $cfg_memberurl; ?>/mystow.php">我的收藏</a></li> 
            <li><a href="<?php echo $cfg_memberurl; ?>/article_add.php">发表文章</a></li> 
            <li><a href="<?php echo $cfg_memberurl; ?>/myfriend.php">好友管理</a></li> 
            <li><a href="<?php echo $cfg_memberurl; ?>/visit-history.php">访客记录</a></li> 
            <li><a href="<?php echo $cfg_memberurl; ?>/search.php">查找好友</a></li> 
        </ul> 
    </div> 
    <div> 
        <a href="<?php echo $cfg_memberurl; ?>/index.php">会员中心</a> |  
        <a href="<?php echo $cfg_memberurl; ?>/edit_fullinfo.php">资料</a> |  
        <a href="<?php echo $myurl;?>">空间</a> |  
        <a href="<?php echo $cfg_memberurl; ?>/index_do.php?fmdo=login&dopost=exit">退出登录</a>  
    </div> 
</div><!-- /userinfo -->

以上代码定义了我们看到的登录结果的样式。

三、修改代码

知道了显示的原理,接下来我们开始实现我们的功能:

1、定义显示的地方,并指定id

head.htm中添加:

<!----> 

<div>   

    <div class="w960 center">  

        <div id="_userlogin_head"> 

        </div> 

        <div> 

            欢迎来到本网站,   

            <a href="{dede:global.cfg_memberurl/}/login.php" target="_blank">登录</a>  

            |<a href="{dede:global.cfg_memberurl/}/index_do.php?fmdo=user&dopost=regnew" target="_blank">注册</a> 

        </div><!--/toplinks--> 

         

    </div>  

</div> 

 

2、添加javascript执行

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

 

3、自义javascriptCheckLogin_head()函数

为了使代码模块化,我们定义在head.htm里。

注意:得重新包含dedeajax2.jsj.js文件,因为虽然我们之前在index.htm中定义过了,但是是引用不到的。

<script language="javascript" type="text/javascript" src="{dede:global.cfg_cmsurl/}/include/dedeajax2.js"></script> 
<script language="javascript" type="text/javascript" src="{dede:global.cfg_templets_skin/}/js/j.js" ></script> 
 
<SCRIPT language=javascript type=text/javascript> 
<!-- 
    function CheckLogin_head(){ 
      var taget_obj_head = document.getElementById('_userlogin_head'); 
      myajax_head = new DedeAjax(taget_obj_head,false,false,'','',''); 
      myajax_head.SendGet2("{dede:global.cfg_cmspath/}/member/ajax_loginsta_head.php"); 
      DedeXHTTP = null; 
    } 
--> 
</SCRIPT>

 

4、其实第3步大家有注意到了我们是根据ajax_loginsta_head.php文件来获得结果HTML代码的。

ajax_loginsta_head.php文件是由ajax_loginsta.php 复制粘贴出来的,我们在它的基础上改为:

require_once(dirname(__FILE__)."/config.php"); 
AjaxHead(); 
if($myurl == '') exit(''); 
 
$uid  = $cfg_ml->M_LoginID; 
 
!$cfg_ml->fields['face'] && $face = ($cfg_ml->fields['sex'] == '女')? 'dfgirl' : 'dfboy'; 
$facepic = empty($face)? $cfg_ml->fields['face'] : $GLOBALS['cfg_memberurl'].'/templets/images/'.$face.'.png'; 
?> 
 
<div> 
    <script type="text/javascript"> 
    var now=(new Date()).getHours(); 
    if(now>0&&now<=6){ 
        document.write("午夜好,"); 
    }else if(now>6&&now<=11){ 
        document.write("早上好,"); 
    }else if(now>11&&now<=14){ 
        document.write("中午好,"); 
    }else if(now>14&&now<=18){ 
        document.write("下午好,"); 
    }else{ 
        document.write("晚上好,"); 
    } 
    </script> 
    你好:<strong><?php echo $cfg_ml->M_UserName; ?></strong>,欢迎登录 
     <a href="<?php echo $cfg_memberurl; ?>/index_do.php?fmdo=login&dopost=exit">退出登录</a>  
</div><!-- /userinfo -->

 

OK,效果显示出来了。


织梦二次开发QQ群

本站客服QQ号:3149518909(点击左边QQ号交流),群号(383578617) DedeCMS织梦教程QQ群 如果您有任何织梦问题,请把问题发到群里,阁主将为您写解决教程!

转载请注明: 织梦模板 » 织梦实现在网站顶部显示会员登录信息

  • 织梦dedecms手机站m目录下不生成index.html实现动态更新
    阅读
    用 织梦建站 会手机站首页不更新的苦恼,每次 PC 更新,要去删除 m 目录下的 index.html ,手机站首页才会更新,这样很麻烦,通过以下修改,让手机站首页是动态的,不生成 index.html , PC 端更新后,手机端首页自动更新。 把 \m\index.php 里面的 $row[sho...
  • 织梦Fatal error: Call to undefined function make_hash() in /dede/sys_info.php on line 201的解决方法
    阅读
    织梦系统安装好后,进入后台,出现Fatal error: Call to undefined function make_hash() in /dede/sys_info.php on line 201 一般出现这个问题是因为升级网站引起的。我们可以直接把错误提示这段代码删除或者屏蔽就行了。 打开/dede/sys_info.php,找到201...
  • 织梦dedecms提交自定义表单后发送到指定邮箱
    阅读
    网上很多教程都是用 dedecms 自带的邮件库发送邮件,而且是写死要发送的字段内容,今天我们用 phpmailer 来给站长发送自定义表单提交的数据到指定邮箱上 (QQ 邮箱, 163 邮箱都可以 ) ,不写死任何东西,有什么字段就提交发送什么字段。 操作之前,我们要先...
  • 织梦dedecms网站添加打赏功能
    阅读
    有时我们看到别人家的织梦dedecms网站有打赏功能,是不是羡慕嫉妒恨呢?今天我来给大家讲讲织梦网站怎么添加支付宝、微信打赏功能。 二、首先登陆畅言后台(没有畅言账号的首先注册账号) 三、进入后台,找到实验室--打赏 四、设置配置信息,保存。 五、复制...
  • 织梦Dedecms 5.7 火车头采集免登陆发布接口适配PHP7.X插件
    阅读
    最近有粉丝说,之前用的火车头发布文章时,用免登陆接口在PHP7.0环境中显示空白,于是今天抽空更新了一下插件(话说,DedeCms早期版本无法在PHP7.X运行,用最新版的!),那么接下来的代码就是插件发布模块无须变更,只需要变更接口插件就可以了 ?php/*/////...
  • 织梦dedecms系统多城市分站功能开发思路
    阅读
    当前很多人用织梦dedecms系统建站,多城市分站对地方性长尾关键词和全国市场的推广有着很大的帮助,今天和大家分享下如何实现织梦dedecms系统多城市分站功能。 方法/步骤 织梦dede城市分站有三种方法: 第一种是建立N多个模板,有多少个城市建立多少个模板,...
  • 织梦手机站下一篇变上一篇而且还出错Request Error!
    阅读
    最新的织梦dedecms程序手机版下一篇变上一篇而且还出错Request Error!,这是因为官方写错了一个地方 打开 /include/arc.archives.class.php 找到 $mlink = view.php?aid=.$preRow[id]; 注意:这个文件里面有2个上面的代码,真正要改的是大概在 839 行 改成 $...
  • 织梦获取当前栏目id并判断使当前导航栏目高亮
    阅读
    织梦导航栏目高亮代码如下: {dede:field name=typeid runphp=yes} if(@me==8) @me=1; else @me=0; {/dede:field} 导航的写法, 比如:lia href={dede:type typeid=7}[field:typelink /]{/dede:type} {dede:field name=typeid runphp=yes} if(@me==7) @me=cl...
  • 织梦小说站上一章节下一章节修改arc.archives.class.php的实现方法
    阅读
    织梦小说站上一章节下一章节实现方法,通过修改include/arc.archives.class.php这个文件来实现这样的效果: 实现原理:通过writer作者栏来匹配所有章节,然后根据文章ID排序来实现织梦小说文章上一章节下一章节。 部分代码截图: 附:arc.archives.class.php...
  • 织梦火车头采集免登陆接口采集文章后自动更新栏目、首页、文章页,实现自动化采集
    阅读
    最近用织梦dedecms程序采集文章时候,发现每次采集都要去后台更新一下文章、栏目、上下篇以及首页,操作起来真心麻烦,后面在网上收集了一些代码以及经过自己调试,发现居然可以自动更新文章页以及栏目、首页。真心爽,这样子就能稳稳的挂机采集了哈。这是免...
收藏此文 打赏本站

如本文对您有帮助,就请六久阁织梦模板网抽根烟吧!

  • 支付宝打赏
    支付宝扫描打赏
    微信打赏
    微信扫描打赏
织梦后台新增多个栏目内容及前台调用方法
« 上一篇 2018年04月13日
织梦后台系统设置在PHP5.4环境中不能保存中文参数的解决方法
下一篇 » 2018年04月12日

精彩评论

有问题在这里提问,阁主会为你解决!
  • 全部评论(0
    还没有评论,快来抢沙发吧!
推荐织梦插件更多
推荐精品模板更多
营销型泵业水泵机械设备织梦模板(带手机端)
更新时间:2019-11-10

人已经看过了!

学生桌学习用品家具行业公司织梦模板(带手机端)
更新时间:2019-09-19

人已经看过了!

织梦文学资讯散文美文门户站带手机端会员中心投稿
更新时间:2019-09-06

人已经看过了!

响应式装修室内设计织梦模板(自适应手机端)
更新时间:2019-11-11

人已经看过了!

大气漂亮婚纱摄影织梦模板 带数据同步手机m站
更新时间:2017-08-10

人已经看过了!

织梦模板素材源码下载站带会员中心带手机模板
更新时间:2019-09-05

人已经看过了!

绿色园林景观设计企业响应式织梦模板
更新时间:2019-11-07

人已经看过了!