菜鸟科技网

dedecms模板会员登录怎么设置?

核心步骤

  1. 编写登录表单:在HTML模板文件中,创建一个包含用户名/邮箱、密码和验证码的表单。
  2. 设置表单属性:确保表单的 action 属性指向DedeCMS的登录处理程序,method 通常为 post
  3. 添加必要的隐藏字段:DedeCMS的登录机制需要一些特定的隐藏字段来保证安全性和正确性。
  4. (可选)添加登录状态判断:根据用户是否已登录,显示不同的内容(登录按钮或会员中心链接)。

基础会员登录表单代码

这是最常用、最标准的登录表单代码,你可以将它直接复制到你的模板文件(如 head.htmfooter.htm 或专门的登录页面 login.htm)中。

dedecms模板会员登录怎么设置?-图1
(图片来源网络,侵删)
<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="form-group">
        <label for="userid">用户名/Email:</label>
        <input type="text" name="userid" id="userid" required="required" class="form-control" />
    </div>
    <div class="form-group">
        <label for="pwd">密码:</label>
        <input type="password" name="pwd" id="pwd" required="required" class="form-control" />
    </div>
    {dede:if $cfg_mb_open=='Y'}
    <div class="form-group">
        <label for="vdcode">验证码:</label>
        <div class="input-group">
            <input type="text" name="vdcode" id="vdcode" required="required" class="form-control" style="width: 120px;" />
            <img src="{dede:global.cfg_cmspath/}/include/vdimgck.php" onclick="this.src='{dede:global.cfg_cmspath/}/include/vdimgck.php?'+Math.random();" style="cursor: pointer; height: 32px;" title="看不清?点击换一张" />
        </div>
    </div>
    {/dede:if}
    <div class="form-group">
        <button type="submit" class="btn btn-primary">登 录</button>
        <a href="{dede:global.cfg_memberurl/}/index_do.php?fmdo=user&dopost=regnew" class="btn btn-link">注册新账号</a>
        <a href="{dede:global.cfg_memberurl/}/resetpassword.php" class="btn btn-link">忘记密码?</a>
    </div>
</form>

代码详解:

  1. <form>:

    • action="{dede:global.cfg_memberurl/}/index_do.php": 这是表单提交的目标地址。{dede:global.cfg_memberurl/} 是DedeCMS的全局标签,用于获取会员中心的URL,确保路径正确。
    • method="post": 使用 POST 方法提交数据,更安全。
  2. 隐藏字段:

    • <input type="hidden" name="dopost" value="login" />: 这是最重要的字段,它告诉 index_do.php 这个程序,用户执行的是“登录”操作。
    • <input type="hidden" name="keeptime" value="604800" />: 设置登录保持时间,单位是秒。604800 是7天,你可以根据需要修改,0 表示不保持(关闭浏览器即失效)。
  3. 输入字段:

    • name="userid": 用户名或邮箱的输入字段名,固定为 userid
    • name="pwd": 密码的输入字段名,固定为 pwd
    • name="vdcode": 验证码的输入字段名,固定为 vdcode,验证码图片的调用使用 {dede:global.cfg_cmspath/}/include/vdimgck.php
  4. 其他链接:

    dedecms模板会员登录怎么设置?-图2
    (图片来源网络,侵删)
    • 注册链接:{dede:global.cfg_memberurl/}/index_do.php?fmdo=user&dopost=regnew
    • 忘记密码链接:{dede:global.cfg_memberurl/}/resetpassword.php

高级用法:根据登录状态显示不同内容

在很多场景下,我们希望:

  • 未登录时:显示“登录”和“注册”按钮。
  • 已登录时:显示“欢迎,[用户名]!”、“会员中心”、“退出登录”等。

这可以通过DedeCMS的 global 标签结合PHP判断来实现。

方法1:使用DedeCMS的 {dede:global name='user' /}

这个标签可以获取当前登录用户的用户名,如果用户未登录,则内容为空。

{dede:global name='user' runphp='yes'}
    if(@me != '') {
        // 用户已登录
        $uid = @me; // @me在这里就是用户名
        @me = "欢迎您,<strong>{$uid}</strong>!";
    } else {
        // 用户未登录
        @me = "您尚未登录,请<a href='{dede:global.cfg_memberurl/}/login.php'>登录</a>或<a href='{dede:global.cfg_memberurl/}/index_do.php?fmdo=user&dopost=regnew'>注册</a>。";
    }
{/dede:global}

使用方法: 将上面的代码放在你想要显示登录状态的位置,它会自动判断并显示相应的文字。

dedecms模板会员登录怎么设置?-图3
(图片来源网络,侵删)

方法2:在模板文件中直接使用PHP判断(更灵活)

如果你对PHP比较熟悉,可以直接在模板文件中嵌入PHP代码来实现更复杂的功能。

  1. 确保模板支持PHP: 在DedeCMS后台,系统 -> 系统基本参数 -> 核心设置 中,找到 是否开启模板全局PHP 选项,设置为“是”。

  2. 编写PHP代码: 在你的模板文件(如 head.htm)中,加入以下代码:

    <?php
    // 引入会员类文件
    // require_once(DEDEMEMBER.'/config.php'); // 这行通常在系统初始化时已加载,可以不用写
    if($cfg_ml->IsLogin()) {
        // 用户已登录
        $uid = $cfg_ml->M_LoginID; // 获取用户名
        $face = $cfg_ml->fields['face']; // 获取头像
        $space_url = $cfg_ml->GetUrl(); // 获取会员空间URL
    ?>
        <div class="user-info">
            <img src="<?php echo $face ? $face : '/member/images/dfpic.gif'; ?>" alt="头像" class="avatar" />
            <span>欢迎, <a href="<?php echo $space_url; ?>"><?php echo $uid; ?></a></span>
            <a href="<?php echo $cfg_memberurl; ?>/index_do.php?fmdo=login&dop=logout">退出登录</a>
        </div>
    <?php
    } else {
        // 用户未登录,显示登录表单(可以用上面的基础表单代码)
    ?>
        <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" />
            <input type="text" name="userid" placeholder="用户名" required />
            <input type="password" name="pwd" placeholder="密码" required />
            <button type="submit">登录</button>
        </form>
    <?php
    }
    ?>

常见问题与注意事项

  1. 登录失败,提示“验证码错误”

    • 检查验证码图片是否能正常加载。
    • 确保输入的验证码区分大小写(默认不区分)。
    • 清除浏览器缓存和Cookie后重试。
  2. 登录失败,提示“用户不存在”或“密码错误”

    • 确认用户名和密码输入正确。
    • 检查会员模型是否开启,在后台 会员 -> 会员模型管理 中,确保你的模型是“启用”状态。
    • 检查会员是否被禁用。
  3. 登录成功后跳转

    • 默认情况下,登录成功后会跳转到会员中心首页。
    • 如果你想自定义跳转页面,可以在 index_do.php 的登录处理逻辑中修改,但这需要修改源文件,不推荐,更推荐的方式是使用JS在登录成功后执行跳转,或者通过URL参数指定,但这需要一定的二次开发。
  4. 安全性

    • 确保你的网站没有SQL注入等漏洞,并及时更新DedeCMS到最新版本。
    • 对于后台登录,强烈建议启用验证码。

对于大多数用户,直接使用第一部分的基础表单代码就足够了,如果你需要更丰富的交互体验,可以学习使用第二部分的状态判断方法,理解 action 地址、dopost 值和各个 name 属性的含义是掌握DedeCMS会员登录的关键。

分享:
扫描分享到社交APP
上一篇
下一篇