核心步骤
- 编写登录表单:在HTML模板文件中,创建一个包含用户名/邮箱、密码和验证码的表单。
- 设置表单属性:确保表单的
action属性指向DedeCMS的登录处理程序,method通常为post。 - 添加必要的隐藏字段:DedeCMS的登录机制需要一些特定的隐藏字段来保证安全性和正确性。
- (可选)添加登录状态判断:根据用户是否已登录,显示不同的内容(登录按钮或会员中心链接)。
基础会员登录表单代码
这是最常用、最标准的登录表单代码,你可以将它直接复制到你的模板文件(如 head.htm、footer.htm 或专门的登录页面 login.htm)中。

<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>
代码详解:
-
<form>:action="{dede:global.cfg_memberurl/}/index_do.php": 这是表单提交的目标地址。{dede:global.cfg_memberurl/}是DedeCMS的全局标签,用于获取会员中心的URL,确保路径正确。method="post": 使用POST方法提交数据,更安全。
-
隐藏字段:
<input type="hidden" name="dopost" value="login" />: 这是最重要的字段,它告诉index_do.php这个程序,用户执行的是“登录”操作。<input type="hidden" name="keeptime" value="604800" />: 设置登录保持时间,单位是秒。604800是7天,你可以根据需要修改,0表示不保持(关闭浏览器即失效)。
-
输入字段:
name="userid": 用户名或邮箱的输入字段名,固定为userid。name="pwd": 密码的输入字段名,固定为pwd。name="vdcode": 验证码的输入字段名,固定为vdcode,验证码图片的调用使用{dede:global.cfg_cmspath/}/include/vdimgck.php。
-
其他链接:
(图片来源网络,侵删)- 注册链接:
{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}
使用方法:
将上面的代码放在你想要显示登录状态的位置,它会自动判断并显示相应的文字。
(图片来源网络,侵删)
方法2:在模板文件中直接使用PHP判断(更灵活)
如果你对PHP比较熟悉,可以直接在模板文件中嵌入PHP代码来实现更复杂的功能。
-
确保模板支持PHP:
在DedeCMS后台,系统 -> 系统基本参数 -> 核心设置 中,找到 是否开启模板全局PHP 选项,设置为“是”。
-
编写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
}
?>
常见问题与注意事项
-
登录失败,提示“验证码错误”:
- 检查验证码图片是否能正常加载。
- 确保输入的验证码区分大小写(默认不区分)。
- 清除浏览器缓存和Cookie后重试。
-
登录失败,提示“用户不存在”或“密码错误”:
- 确认用户名和密码输入正确。
- 检查会员模型是否开启,在后台
会员 -> 会员模型管理 中,确保你的模型是“启用”状态。
- 检查会员是否被禁用。
-
登录成功后跳转:
- 默认情况下,登录成功后会跳转到会员中心首页。
- 如果你想自定义跳转页面,可以在
index_do.php 的登录处理逻辑中修改,但这需要修改源文件,不推荐,更推荐的方式是使用JS在登录成功后执行跳转,或者通过URL参数指定,但这需要一定的二次开发。
-
安全性:
- 确保你的网站没有SQL注入等漏洞,并及时更新DedeCMS到最新版本。
- 对于后台登录,强烈建议启用验证码。
对于大多数用户,直接使用第一部分的基础表单代码就足够了,如果你需要更丰富的交互体验,可以学习使用第二部分的状态判断方法,理解 action 地址、dopost 值和各个 name 属性的含义是掌握DedeCMS会员登录的关键。
这个标签可以获取当前登录用户的用户名,如果用户未登录,则内容为空。
{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}
使用方法: 将上面的代码放在你想要显示登录状态的位置,它会自动判断并显示相应的文字。

方法2:在模板文件中直接使用PHP判断(更灵活)
如果你对PHP比较熟悉,可以直接在模板文件中嵌入PHP代码来实现更复杂的功能。
-
确保模板支持PHP: 在DedeCMS后台,
系统->系统基本参数->核心设置中,找到是否开启模板全局PHP选项,设置为“是”。 -
编写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 } ?>
常见问题与注意事项
-
登录失败,提示“验证码错误”:
- 检查验证码图片是否能正常加载。
- 确保输入的验证码区分大小写(默认不区分)。
- 清除浏览器缓存和Cookie后重试。
-
登录失败,提示“用户不存在”或“密码错误”:
- 确认用户名和密码输入正确。
- 检查会员模型是否开启,在后台
会员->会员模型管理中,确保你的模型是“启用”状态。 - 检查会员是否被禁用。
-
登录成功后跳转:
- 默认情况下,登录成功后会跳转到会员中心首页。
- 如果你想自定义跳转页面,可以在
index_do.php的登录处理逻辑中修改,但这需要修改源文件,不推荐,更推荐的方式是使用JS在登录成功后执行跳转,或者通过URL参数指定,但这需要一定的二次开发。
-
安全性:
- 确保你的网站没有SQL注入等漏洞,并及时更新DedeCMS到最新版本。
- 对于后台登录,强烈建议启用验证码。
对于大多数用户,直接使用第一部分的基础表单代码就足够了,如果你需要更丰富的交互体验,可以学习使用第二部分的状态判断方法,理解 action 地址、dopost 值和各个 name 属性的含义是掌握DedeCMS会员登录的关键。
