织梦主页如何添加用户登录模块?

99ANYc3cd6
预计阅读时长 27 分钟
位置: 首页 DEDE建站 正文

使用官方默认的登录标签(最简单、推荐)

这是最直接的方法,织梦系统已经内置了登录所需的标签,你只需要在模板文件中找到合适的位置,将这些标签粘贴进去即可。

dede 织梦 如何在主页添加用户登录
(图片来源网络,侵删)

适用场景:绝大多数情况,尤其是对样式没有特殊要求时。

操作步骤

  1. 登录后台:使用管理员账号登录您的织梦DedeCMS后台。
  2. 找到模板文件:在后台左侧菜单栏,点击【模板】 -> 【默认模板管理】。
  3. 编辑主页模板:在列表中找到并点击 index.htm(您的首页模板文件),进入编辑模式。
  4. 插入登录代码:在您希望显示登录框的位置(页面顶部、侧边栏 head.htmfooter.htm 中),插入以下代码块。

登录代码块(复制即可使用):

<div id="userlogin">
    <form name="userlogin" action="{dede:global.cfg_memberurl/}/index_do.php" method="POST">
        <input type="hidden" name="dopost" value="login" />
        <input type="hidden" name="keeptime" value="604800" />
        <div class="fb">
            <span>用户名:</span>
            <input type="text" name="userid" size="20" class="ipt-txt" />
        </div>
        <div class="fb">
            <span>密码:</span>
            <input type="password" name="pwd" size="20" class="ipt-txt" />
        </div>
        <div class="fb">
            <span>验证码:</span>
            <input type="text" name="vdcode" size="8" class="ipt-txt" />
            <img src="{dede:global.cfg_cmspath/}/include/vdimgck.php" width="60" height="24" style="cursor:pointer" onclick="this.src='{dede:global.cfg_cmspath/}/include/vdimgck.php?'+Math.random();" title="看不清?点击更换" />
        </div>
        <div class="fb">
            <button type="submit" class="btn-1">登录</button>
            <a href="{dede:global.cfg_memberurl/}/index.php" target="_blank">注册</a> 
            <a href="{dede:global.cfg_memberurl/}/resetpassword.php" target="_blank">找回密码</a>
        </div>
    </form>
</div>

代码解析

dede 织梦 如何在主页添加用户登录
(图片来源网络,侵删)
  • {dede:global.cfg_memberurl/}:这是一个全局变量,会自动替换成您网站会员中心的URL,如 http://您的域名/member/,使用它比硬编码URL更可靠。
  • name="dopost" value="login":告诉系统这是一个登录请求。
  • name="userid"name="pwd":用户名和密码的输入框,name 值是固定的,不能修改。
  • name="vdcode":验证码输入框。
  • <img src="...vdimgck.php">:显示验证码图片。
  • onclick="this.src='...?'+Math.random();":点击图片时刷新验证码,这是标准写法。
  • 注册找回密码 的链接也使用了 {dede:global.cfg_memberurl/} 来动态生成。

使用织梦标签进行更灵活的布局

如果您想让登录框的样式更美观,或者需要将用户信息(如用户名、头像)动态显示在登录框的位置,可以使用织梦的会员标签。

适用场景:需要高度自定义样式,或者需要根据用户登录状态显示不同内容时。

操作步骤

  1. 同样地,打开并编辑 index.htm 模板文件。
  2. 在需要的位置插入以下代码

代码示例:

dede 织梦 如何在主页添加用户登录
(图片来源网络,侵删)
{dede:php}
    if($cfg_ml->IsLogin()){
        // 如果已经登录,显示欢迎信息和退出链接
        $uid = $cfg_ml->M_ID;
        $uname = $cfg_ml->M_UserName;
        $face = $cfg_ml->M_Mbface ? $cfg_ml->M_Mbface : '/member/images/dfface.gif';
        $query = "SELECT * FROM `dede_member` WHERE `mid` = '$uid'";
        $row = $dsql->GetOne($query);
        $scores = $row['scores'];
        $mtype = $row['mtype'];
        $spaceUrl = $cfg_memberurl.'/index.php?uid='.$uname;
        echo '
        <div class="user-info">
            <div class="user-face"><img src="'.$face.'" alt="'.$uname.'"></div>
            <div class="user-welcome">
                <p>欢迎您, <a href="'.$spaceUrl.'" target="_blank">'.$uname.'</a></p>
                <p>积分: <span>'.$scores.'</span> | 类型: <span>'.$mtype.'</span></p>
                <a href="'.$cfg_memberurl.'/index_do.php?fmdo=login&dopost=exit&keeptime=2592000" target="_top">退出登录</a>
            </div>
        </div>';
    } else {
        // 如果未登录,显示登录表单
        echo '
        <div id="login-box">
            <form name="userlogin" action="{dede:global.cfg_memberurl/}/index_do.php" method="POST">
                <input type="hidden" name="dopost" value="login" />
                <input type="hidden" name="keeptime" value="604800" />
                <div class="login-item">
                    <input type="text" name="userid" placeholder="用户名" />
                </div>
                <div class="login-item">
                    <input type="password" name="pwd" placeholder="密码" />
                </div>
                <div class="login-item">
                    <input type="text" name="vdcode" placeholder="验证码" />
                    <img src="{dede:global.cfg_cmspath/}/include/vdimgck.php" onclick="this.src=\'{dede:global.cfg_cmspath/}/include/vdimgck.php?\'+Math.random();" />
                </div>
                <button type="submit" class="login-btn">登 录</button>
                <div class="login-links">
                    <a href="{dede:global.cfg_memberurl/}/index.php">注册</a> | 
                    <a href="{dede:global.cfg_memberurl/}/resetpassword.php">找回密码</a>
                </div>
            </form>
        </div>';
    }
{/dede:php}

代码解析

  • {dede:php}...{/dede:php}:这是织梦的PHP代码块,可以直接在里面写PHP逻辑。
  • $cfg_ml->IsLogin():判断用户是否已登录。
  • 如果已登录,它会从数据库中查询当前用户的头像、用户名、积分等信息,并格式化后显示。
  • 如果未登录,它会显示一个登录表单,这个表单和第一种方法的类似,但结构更灵活,方便用CSS来美化。
  • 退出登录的链接是 index_do.php?fmdo=login&dopost=exit

调用会员中心登录模块(适合侧边栏)

这种方法通常用于调用一个已经写好的模块,比如放在网站的侧边栏(head.htmfooter.htm)。

适用场景:在多个页面(如所有文章页、列表页)的固定位置显示登录框。

操作步骤

  1. 在模板文件中(如 head.htm)插入以下标签
{dede:include file='member/login.htm'/}

代码解析

  • 这个标签会去 /templets/default/member/ 目录下寻找 login.htm 文件,并将其内容包含进来。
  • 优点:非常方便,一次修改,所有引用了这个模板的页面都会更新。
  • 缺点:样式和布局受限于 login.htm 文件本身,自定义程度不如前两种方法高,如果你自定义了模板,并且没有 login.htm 这个文件,这个方法就会失效。

重要注意事项

  1. CSS样式:无论你使用哪种方法,粘贴的HTML代码通常是没有样式的,为了让登录框看起来美观,你需要为它编写CSS样式,你可以给最外层的 div(如 #userlogin#login-box)定义一些 class,然后在你的网站主CSS文件(如 style.css)中添加对应的样式。

    /* 示例CSS样式 */
    #userlogin {
        width: 200px;
        border: 1px solid #ccc;
        padding: 10px;
        border-radius: 5px;
    }
    #userlogin .fb {
        margin-bottom: 8px;
    }
    #userlogin .ipt-txt {
        border: 1px solid #ddd;
        padding: 5px;
    }
    #userlogin .btn-1 {
        background-color: #4CAF50;
        color: white;
        border: none;
        padding: 5px 15px;
        cursor: pointer;
    }
  2. 验证码问题:如果验证码图片不显示,请检查:

    • /include/vdimgck.php 文件是否存在。
    • 网站的目录权限是否正确,确保Web服务器(如Apache/Nginx)有读取该文件的权限。
    • GD库是否已安装并启用,这是生成验证码图片的必要组件。
  3. 模板缓存:修改模板文件后,如果前台页面没有立即更新,请登录后台,点击【系统】 -> 【一键更新网站】,或者清除一下模板缓存,然后再刷新前台页面。

方法 优点 缺点 推荐度
默认标签 简单、快速、官方支持 样式固定,自定义性差 ★★★★★ (新手首选)
PHP标签 灵活性极高,可动态判断登录状态 需要一点PHP和CSS知识 ★★★★☆ (推荐给有一定经验的用户)
调用模块 方便复用,适合侧边栏 自由度低,依赖特定文件 ★★★☆☆ (适合特定布局需求)

对于大多数用户来说,方法一 已经完全足够,如果您希望登录框和网站整体风格更统一,建议使用 方法二

-- 展开阅读全文 --
头像
C语言与MATLAB接口如何编程?实例有哪些?
« 上一篇 12-04
dede如何嵌套获取顶级栏目及子栏目列表?
下一篇 » 12-04

相关文章

取消
微信二维码
支付宝二维码

目录[+]