dede留言板提交后如何返回原页面?

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

这可以通过修改DedeCMS的源代码来实现,核心思路是:在处理留言提交的PHP文件中,获取用户提交留言前的页面URL,然后使用这个URL进行页面跳转。

dede留言板返回原页
(图片来源网络,侵删)

下面是详细的操作步骤,分为两种情况:

针对留言本模块(guestbook.php

这是最常见的需求,用户在网站的留言本页面留言后,希望返回到留言本页面本身,而不是跳转到其他地方。

操作步骤:

  1. 找到文件 登录你的网站FTP或主机管理系统,找到并下载 plus/guestbook.php 文件。

    dede留言板返回原页
    (图片来源网络,侵删)
  2. 修改代码 用代码编辑器(如Notepad++, VS Code, Dreamweaver)打开 guestbook.php 文件。

  3. 定位关键代码 在文件中找到处理留言提交的代码段,通常会有一个类似 if($dopost == 'send') 的判断。

  4. 修改跳转逻辑 找到类似这样的代码(可能略有不同,但结构相似):

    // ... 省略其他验证代码 ...
    if($dopost == 'send')
    {
        // ... 省略插入数据库的代码 ...
        // 原来的代码可能是直接跳转到留言列表页
        // ShowMsg("留言成功!", "guestbook.php");
        // exit();
    }

    将其中的 ShowMsg("留言成功!", "guestbook.php"); 这一行,修改为使用 dede_geturl() 函数来获取并返回当前页面。

    dede留言板返回原页
    (图片来源网络,侵删)

    修改后的代码如下:

    // ... 省略其他验证代码 ...
    if($dopost == 'send')
    {
        // ... 省略插入数据库的代码 ...
        // 使用 dede_geturl() 获取当前页面URL,并实现返回
        $gourl = dede_geturl();
        ShowMsg("留言成功,正在返回...", $gourl, 0, 2000);
        exit();
    }

    代码解释:

    • $gourl = dede_geturl();:这行代码调用DedeCMS内置的 dede_geturl() 函数,它会智能地获取用户提交留言前的页面URL。
    • ShowMsg("留言成功,正在返回...", $gourl, 0, 2000);:这行代码显示一个成功提示信息,并跳转到 $gourl 变量所指定的URL(也就是原页面),参数 0 表示不显示“继续”按钮,2000 表示2秒后自动跳转。
  5. 保存文件 修改完成后,保存 guestbook.php 文件,并重新上传到你的服务器上,覆盖原文件。

针对文章页或其他页面的留言框

留言框是嵌入在文章页面(article_article.php)或者自定义页面里的,这种情况下,用户提交留言后,自然就希望返回到文章页本身。

操作步骤:

这种情况的修改与情况一类似,但修改的文件不同。

  1. 找到文件 根据你的网站结构,找到处理留言提交的核心文件,这个文件通常是 plus/feedback_ajax.php(用于AJAX提交)或者 plus/feedback.php(用于普通表单提交),在较新的DedeCMS版本中,feedback_ajax.php 更为常用。

  2. 修改代码 同样,用代码编辑器打开这个文件(plus/feedback_ajax.php)。

  3. 定位并修改跳转逻辑 在文件中找到处理 send 操作的代码段,修改 ShowMsg 函数的第二个参数(跳转URL)。

    修改前可能类似这样:

    if($dopost == 'send')
    {
        // ... 省略验证和插入数据库的代码 ...
        ShowMsg("发送成功!", "-1");
        exit();
    }

    修改后的代码如下:

    if($dopost == 'send')
    {
        // ... 省略验证和插入数据库的代码 ...
        // 同样使用 dede_geturl() 获取当前页面URL
        $gourl = dede_geturl();
        ShowMsg("发送成功,正在返回...", $gourl, 0, 2000);
        exit();
    }

    代码解释:

    • 逻辑和情况一完全一样,通过 dede_geturl() 获取来源页,然后跳转回去。
    • 如果原来的代码是 ShowMsg(..., "-1");-1 通常表示返回上一页,但为了确保100%准确和可控,使用 dede_geturl() 是更规范的方法。
  4. 保存文件 保存修改后的文件并上传到服务器覆盖原文件。


重要注意事项

  1. 备份!备份!备份! 在修改任何核心文件之前,务必备份原始文件,这样如果修改后出现问题,你可以快速恢复。

  2. 文件权限 修改并上传文件后,确保其文件权限设置正确(通常是 644),如果权限不正确,可能会导致文件无法正常读写。

  3. 缓存问题 修改后,如果页面没有立即生效,可以尝试清除浏览器缓存和DedeCMS的缓存(在后台的“系统” -> “SQL命令行工具” -> “一键更新网站”中执行)。

  4. dede_geturl() 函数的兼容性 dede_geturl() 是DedeCMS的一个常用函数,兼容性很好,但如果你的网站是高度定制或者二次开发的版本,可以尝试用 $_SERVER['HTTP_REFERER'] 作为备选方案,但前者更可靠。

    // 备选方案,使用 HTTP_REFERER
    if (isset($_SERVER['HTTP_REFERER'])) {
        $gourl = $_SERVER['HTTP_REFERER'];
    } else {
        $gourl = "guestbook.php"; // 如果获取不到,则默认跳转到留言本
    }

通过以上步骤,你就可以轻松实现DedeCMS留言板提交后返回原页面的功能了。

-- 展开阅读全文 --
头像
c语言属于什么语言汇编语言
« 上一篇 02-27
Circle是C语言吗?
下一篇 » 02-27

相关文章

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

目录[+]