dede如何获取当前登录用户名?

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

在模板文件中使用全局变量(最常用)

DedeCMS 在用户登录后,会将用户信息存入一个全局变量中,在模板文件中,可以直接调用这个变量。

核心变量: $_SESSION['dede_field']

这个变量是一个数组,存储了当前登录用户的详细信息,包括用户名、UID、积分等。

获取用户名

用户名存储在 $_SESSION['dede_field']['uname'] 中。

示例代码:

{if $_SESSION['dede_uid']}
    欢迎您,<strong>{$_SESSION['dede_field']['uname']}</strong>!
{else}
    您尚未登录,请先登录。
{/if}

代码解释:

  • {if $_SESSION['dede_uid']}:这是一个判断条件,检查用户是否已登录。$_SESSION['dede_uid'] 是当前登录用户的ID,如果存在,则说明用户已登录,这是一种比直接判断 uname 是否存在更严谨的方式。
  • {$_SESSION['dede_field']['uname']}:直接输出用户名。
  • {else}:如果用户未登录,则显示提示信息。

获取用户ID

用户ID存储在 $_SESSION['dede_uid'] 中。

示例代码:

您的用户ID是:{$_SESSION['dede_uid']}

获取其他用户信息

同样,用户的其他信息也可以通过 $_SESSION['dede_field'] 数组获取。

  • 会员等级: {$_SESSION['dede_field']['mtype']}
  • 会员积分: {$_SESSION['dede_field']['scores']}
  • 注册邮箱: {$_SESSION['dede_field']['email']}

综合示例(一个简单的会员信息栏):

{if $_SESSION['dede_uid']}
    <div class="user-info">
        <p>欢迎您,<a href="/member/index.php">{$_SESSION['dede_field']['uname']}</a>!</p>
        <p>积分:<span>{$_SESSION['dede_field']['scores']}</span></p>
        <p><a href="/member/index.php">会员中心</a> | <a href="/member/logout.php">退出登录</a></p>
    </div>
{else}
    <div class="login-area">
        <a href="/member/login.php">登录</a> | <a href="/member/reg.php">注册</a>
    </div>
{/if}

在PHP代码文件中获取

如果您是在自定义的PHP文件(在 /member/ 目录下新建的PHP文件)中获取用户名,方法略有不同,需要先引入DedeCMS的核心文件。

示例代码:

假设您有一个文件 /member/my_profile.php,您想在这个文件里获取用户名。

<?php
// 1. 引入DedeCMS的配置文件和核心文件
// define('DEDEMEMBER', $cfg_cmspath.'/member'); // 如果在member目录下,这句可能不需要,但为了保险可以加上
require_once(dirname(__FILE__).'/config.php');
require_once(DEDEINC.'/dedemember.cls.php');
// 2. 检查用户是否登录
if ($cfg_ml->IsLogin()) {
    // 3. 获取用户信息
    // $cfg_ml->M_ID 是用户ID
    // $cfg_ml->M_UserName 是用户名
    // $cfg_ml->M_MbType 是会员等级
    // $cfg_ml->M_Scores 是积分
    $username = $cfg_ml->M_UserName;
    $uid = $cfg_ml->M_ID;
    $scores = $cfg_ml->M_Scores;
    echo "当前登录的用户名是:" . $username;
    echo "<br>用户ID是:" . $uid;
    echo "<br>当前积分是:" . $scores;
} else {
    echo "您尚未登录,请先登录。";
    // 可以跳转到登录页面
    // header("Location: login.php");
}
?>

代码解释:

  • require_once(dirname(__FILE__).'/config.php');:引入DedeCMS的全局配置文件,这是必须的。
  • $cfg_ml:这是DedeCMS的会员操作核心对象,通过它可以获取当前登录会员的所有信息。
  • $cfg_ml->IsLogin():判断用户是否已登录,返回 truefalse
  • $cfg_ml->M_UserName:直接获取当前登录用户的用户名。

常见问题与注意事项

  1. 为什么我的代码不显示?

    • 最可能的原因:用户未登录。 请确保您已经用正确的账号在网站前台登录了,DedeCMS的会员登录和后台管理员登录是分开的。
    • 检查变量名拼写: 确保变量名拼写正确,$_SESSION['dede_field']['uname'] 中的 uname 不要写成 username
  2. 如何获取当前登录的管理员用户名?

    • 获取后台管理员用户名和获取前台会员用户名的方法不同,使用的是不同的全局变量。
    • 核心变量: $cuserLogin
    • 示例:
      // 在需要判断管理员权限的PHP文件中
      if ($cuserLogin->getUserName() != '') {
          $admin_name = $cuserLogin->getUserName();
          echo "欢迎,管理员 " . $admin_name;
      }
    • 在模板文件中,通常不直接获取管理员名,而是在PHP逻辑里判断权限后,再传递给模板。
场景 变量/方法 示例
模板文件 (.htm) 获取用户名 {$_SESSION['dede_field']['uname']}
模板文件 (.htm) 判断是否登录 {if $_SESSION['dede_uid']}...{/if}
PHP文件 获取用户名 $cfg_ml->M_UserName (需先登录和引入核心文件)
PHP文件 判断是否登录 $cfg_ml->IsLogin() (需先引入核心文件)

对于绝大多数前端模板开发需求,使用 方法一 中的全局变量 $_SESSION['dede_field']['uname'] 就足够了。

-- 展开阅读全文 --
头像
dede如何同时调用两个标签?
« 上一篇 昨天
织梦文章外部链接如何优化?
下一篇 » 昨天

相关文章

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

目录[+]