在 DedeCMS(织梦CMS)中,判断用户是否登录可以通过检查全局变量 $cfg_ml 或 $_SESSION 中的用户登录状态来实现,以下是几种常用方法:

(图片来源网络,侵删)
方法1:使用 $cfg_ml(推荐)
$cfg_ml 是 DedeCMS 的会员登录核心对象,通过其 IsLogin() 方法可以直接判断登录状态。
<?php
require_once(dirname(__FILE__).'/include/common.inc.php'); // 引入核心文件
if ($cfg_ml->IsLogin()) {
// 已登录,获取当前登录用户信息
$uid = $cfg_ml->M_ID; // 用户ID
$username = $cfg_ml->M_UserName; // 用户名
echo "欢迎,{$username}!";
} else {
// 未登录
echo "您尚未登录,请先登录。";
}
?>
方法2:检查 $_SESSION 变量
DedeCMS 的登录信息会存储在 $_SESSION['dede_admin_id'](后台)或 $_SESSION['mid'](前台)中,可以直接检查这些变量。
前台登录判断
<?php
if (isset($_SESSION['mid']) && $_SESSION['mid'] > 0) {
// 已登录
$uid = $_SESSION['mid'];
echo "已登录,用户ID: {$uid}";
} else {
// 未登录
echo "未登录";
}
?>
后台登录判断
<?php
if (isset($_SESSION['dede_admin_id']) && $_SESSION['dede_admin_id'] > 0) {
// 已登录后台
echo "已登录后台";
} else {
// 未登录后台
echo "未登录后台";
}
?>
方法3:结合 DEDEMEMBER 跳转
如果需要在未登录时跳转到登录页面,可以使用 DedeCMS 的内置函数:
<?php
require_once(dirname(__FILE__).'/include/common.inc.php');
if (!$cfg_ml->IsLogin()) {
// 未登录,跳转到登录页面
header("Location: /member/login.php?gotopage=".urlencode($dede_nowurl));
exit();
}
// 已登录逻辑
echo "欢迎,{$cfg_ml->M_UserName}!";
?>
注意事项
-
引入核心文件:
确保代码中包含require_once(dirname(__FILE__).'/include/common.inc.php');,否则$cfg_ml可能未定义。
(图片来源网络,侵删) -
区分前后台:
- 前台登录状态通过
$cfg_ml或$_SESSION['mid']判断。 - 后台登录状态通过
$_SESSION['dede_admin_id']判断。
- 前台登录状态通过
-
模板中使用:
在 DedeCMS 模板中,可以通过{dede:php}标签嵌入 PHP 代码判断登录状态。
示例:模板中判断登录
{dede:php}
if ($cfg_ml->IsLogin()) {
echo "<a href='/member/index.php'>会员中心</a>";
} else {
echo "<a href='/member/login.php'>登录</a>";
}
{/dede:php}
通过以上方法,可以灵活判断 DedeCMS 的登录状态并执行相应逻辑。
