dede登录后如何设置跳转页面?

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

下面我将从 默认行为常见需求及实现方法自定义跳转 三个方面为您详细解答。

dede 登录后跳转
(图片来源网络,侵删)

DedeCMS 默认的登录跳转行为

在 DedeCMS 中,当你点击登录按钮并成功登录后,系统会根据你所在的页面位置进行跳转:

  1. 如果你在登录页面 (member/login.php)

    • 默认会跳转到 会员中心首页 (member/index.php)。
  2. 如果你在网站的任意其他页面(比如文章详情页、首页等)

    • 系统会尝试跳转回你 “上一个访问的页面”,这是通过一个名为 dede_goto 的参数来实现的,DedeCMS 会在登录前将当前页面的 URL 记录下来,登录成功后读取这个 URL 并进行跳转。

总结一下:DedeCMS 的默认跳转逻辑是:优先返回上一页,如果没有上一页信息,则默认跳转到会员中心

dede 登录后跳转
(图片来源网络,侵删)

常见需求及实现方法

需求1:登录后返回到“上一页”

这是 DedeCMS 的默认行为,通常无需额外配置,但如果它不工作,可能是因为:

  • 问题member/login.php 页面中的跳转代码被修改过。
  • 解决方案
    1. 打开 member/login.php 文件。
    2. 找到类似下面的代码(通常在表单的 action 属性中):
      <form name="form1" action="index_do.php" method="POST">
    3. 确保登录成功后处理的文件 index_do.php 中的跳转逻辑是正确的,打开 member/index_do.php 文件,查找关键代码:
      // ... 登录验证逻辑 ...
      if($login == 1)
      {
          // 获取 dede_goto 参数
          $gourl = $dopost == 'login' ? GetCpparam() : '';
          if($gourl=='')
          {
              $gourl = 'index.php';
          }
          ShowMsg('成功登录,正在进入...', $gourl, 0, 2000);
          exit();
      }

      这段代码的核心是 $gourl = $dopost == 'login' ? GetCpparam() : '';GetCpparam() 函数就是用来获取并处理 dede_goto 参数的,如果这段代码存在且逻辑正确,那么返回上一页的功能就是正常的。

需求2:登录后固定跳转到会员中心首页

如果你希望无论用户从哪里登录,都一律跳转到 member/index.php,你需要修改 member/index_do.php 文件。

  1. 操作步骤

    dede 登录后跳转
    (图片来源网络,侵删)
    • 用编辑器打开 member/index_do.php
    • 找到上面提到的 $gourl 赋值部分。
    • 将代码修改为,强制 $gourl 的值为 index.php

    修改前:

    if($gourl=='')
    {
        $gourl = 'index.php';
    }

    修改后:

    // 直接覆盖,无论 dede_goto 是什么,都跳转到 index.php
    $gourl = 'index.php'; 

    或者更直接地,你可以把整个 $gourl 的逻辑简化掉:

    // ... 登录验证逻辑 ...
    if($login == 1)
    {
        // 直接指定跳转地址,不再使用 dede_goto
        ShowMsg('成功登录,正在进入...', 'index.php', 0, 2000);
        exit();
    }
  2. 效果: 修改后,任何用户在任何地方点击登录并成功后,都会跳转到 member/index.php

需求3:登录后跳转到指定的其他页面(如网站首页)

如果你希望登录后跳转到网站的首页(/index.php),而不是会员中心。

  1. 操作步骤

    • 同样打开 member/index_do.php 文件。
    • 找到 $gourl 赋值的地方,将其修改为你的目标页面路径。

    示例

    // ... 登录验证逻辑 ...
    if($login == 1)
    {
        // 跳转到网站首页
        $gourl = '../index.php'; // 使用 ../ 返回上一级目录,进入网站根目录
        // 或者直接写绝对路径(相对于网站根目录)
        // $gourl = '/index.php'; 
        ShowMsg('成功登录,欢迎回来!', $gourl, 0, 2000);
        exit();
    }

自定义跳转(高级)

有时你可能需要更复杂的逻辑,比如根据用户角色跳转到不同页面,这需要你修改 member/index_do.php 中的登录成功部分。

示例:根据用户用户组跳转

假设你希望管理员登录后跳转到后台,普通会员跳转到会员中心。

  1. 操作步骤

    • 打开 member/index_do.php
    • 在登录成功的 if($login == 1) 代码块中,加入判断用户组的逻辑。

    代码示例

    // ... 登录验证逻辑 ...
    if($login == 1)
    {
        // 获取当前登录的用户信息
        $row = $dsql->GetOne("SELECT * FROM `dede_member` WHERE mid='{$uid}'");
        // 根据用户组ID进行判断
        // 假设管理员用户组ID为1
        if ($row['mtype'] == 1) {
            $gourl = '../dede/index.php'; // 跳转到后台管理
        } else {
            $gourl = 'index.php'; // 普通会员跳转到会员中心
        }
        ShowMsg('成功登录,正在进入...', $gourl, 0, 2000);
        exit();
    }

    注意dede_member 表中的 mtype 字段存储的是用户组ID,你需要根据自己网站的用户组设置来调整判断条件。


总结与注意事项

需求场景 修改文件 核心修改点
返回上一页(默认) member/index_do.php 确保 GetCpparam() 逻辑未被破坏。
固定跳转会员中心 member/index_do.php $gourl 强制赋值为 'index.php'
跳转到网站首页 member/index_do.php $gourl 赋值为 '../index.php''/index.php'
根据用户角色跳转 member/index_do.php 在登录成功后,查询用户信息,用 if/else 判断 $gourl 的值。

重要提示

  • 备份文件:在修改任何核心文件(如 index_do.php)之前,请务必备份原文件,以防修改出错导致网站无法正常登录。
  • 模板标签:登录成功后显示的提示信息(如“成功登录,正在进入...”)是在 ShowMsg() 函数中定义的,你可以自由修改。
  • 版本差异:不同版本的 DedeCMS(如 5.7, 5.8)文件结构和代码可能略有差异,但核心逻辑基本一致,如果找不到代码,可以根据文件中的注释或功能进行搜索。

希望这份详细的指南能帮助你解决 DedeCMS 登录跳转的问题!

-- 展开阅读全文 --
头像
织梦破解版企业主题
« 上一篇 04-14
织梦系统还有人用吗?
下一篇 » 04-14

相关文章

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

目录[+]