dede会员注册如何修改?

99ANYc3cd6
预计阅读时长 23 分钟
位置: 首页 DEDE建站 正文
  1. 修改注册页面:调整页面上的表单元素、样式和提示文字。
  2. 修改注册逻辑:增加、删除或修改表单字段的验证规则。
  3. 修改数据库结构:增加新的会员字段,以便存储更多信息。
  4. 修改会员中心:让新增加的字段在会员中心可以显示和编辑。

下面我将分步进行详细说明,并提供关键的代码片段。


准备工作:修改前必读

  1. 备份!备份!备份! 任何对核心文件的修改都可能导致网站出错,请务必备份你的网站程序,特别是 /dede/ 目录(后台管理目录)和 /member/ 目录(会员目录)下的文件,以及你的数据库。
  2. FTP/SFTP 和数据库管理工具:你需要使用 FTP 客户端(如 FileZilla)连接服务器,并使用数据库管理工具(如 phpMyAdmin)来操作数据库。
  3. 了解文件结构:熟悉 DedeCMS 的文件结构,特别是 member/ 目录,这里是会员功能的核心所在。

第一步:修改注册页面 (reg_new.php)

注册页面是用户填写信息的地方,默认文件是 /member/reg_new.php

修改页面标题和说明文字

直接打开 /member/reg_new.php 文件,找到你想要修改的文本,<title> 标签、<h1> 标签或者页面中的提示语,直接修改即可。

增加或删除表单字段

这是最常见的修改需求,我们想在注册时增加一个“昵称”字段。

操作步骤:

  1. 修改前端 HTML: 在 /member/reg_new.php 文件中,找到 <form> 标签内部,在你希望的位置添加新的表单元素。

    <!-- 原有代码 -->
    <tr>
        <td height="45">用户名:</td>
        <td>
            <input type="text" name="userid" id="userid" size="20" class="intxt" />
            <span id="usmsg"> (用户名只能用英文字母和数字组成,长度在2-12之间)</span>
        </td>
    </tr>
    <!-- 在这里添加你的新字段,昵称” -->
    <tr>
        <td height="45">昵称:</td>
        <td>
            <input type="text" name="nickname" id="nickname" size="20" class="intxt" />
            <span> (这是您的昵称)</span>
        </td>
    </tr>
    <!-- 其他原有字段... -->

    注意

    • name 属性(如 name="nickname")至关重要,后端处理程序会通过这个名称来获取数据。
    • id 属性(如 id="nickname")用于 JavaScript 验证。
  2. 添加 JavaScript 验证: 为了提升用户体验,通常需要对新增字段进行前端验证,在 <head> 部分找到 <script> 标签,在里面添加验证逻辑。

    // 在 reg_new.php 的 <script> 标签内添加
    function checkSubmit() {
        if (document.getElementById('userid').value == '') {
            alert('用户名不能为空!');
            return false;
        }
        // ... 其他原有验证 ...
        // 添加对新字段的验证
        if (document.getElementById('nickname').value == '') {
            alert('昵称不能为空!');
            return false;
        }
        return true;
    }
  3. 修改提交按钮的 onclick 事件: 找到提交按钮,确保它调用了你刚刚添加的 checkSubmit() 函数。

    <input type="submit" name="submit" value="同意协议并注册" class="coolbg" onclick="return checkSubmit();" />

第二步:修改注册处理逻辑 (reg_new.php 的后端部分)

用户提交表单后,数据会由 /member/reg_new.php 文件中的 PHP 代码进行处理。

接收新增字段的数据

reg_new.php 文件中,找到处理表单提交的 PHP 代码段(通常在 if($dopost=='save') 语句块内),你需要用 $_POST 获取新增字段的数据,并将其加入到要插入数据库的数据数组中。

// 原有代码大致如下
$mtypeid = isset($mtypeid) && is_numeric($mtypeid) ? $mtypeid : 0;
$userid = cn_substr(HtmlReplace($userid, 1), 20);
$pwd = md5($pwd);
$email = $email;
// ... 获取其他字段 ...
// 1. 接收新增字段
$nickname = isset($_POST['nickname']) ? trim($_POST['nickname']) : '';
// 2. 将新字段加入到需要插入数据库的数据中
// 找到类似 $inQuery = "INSERT INTO `#@__member` (`mtype`, `userid`, `pwd`...) VALUES ('$mtypeid', '$userid', '$pwd'...);" 的代码
// 修改这个 SQL 语句,增加 `nickname` 字段
// 假设你的数据库表 `#@__member` 中已经有 `nickname` 字段
$inQuery = "INSERT INTO `#@__member` (`mtype`, `userid`, `pwd`, `email`, `uname`, `nickname`) VALUES ('$mtypeid', '$userid', '$pwd', '$email', '$userid', '$nickname')";

增加后端验证逻辑

在前端验证的基础上,后端验证是必须的,以防止绕过前端验证的非法请求。

// 在处理提交的代码块中增加验证
if ($dopost == 'save') {
    // ... 其他验证 ...
    // 添加对新字段的验证
    if ($nickname == '') {
        ShowMsg('昵称不能为空!', '-1');
        exit();
    }
    // 可以增加更复杂的验证,比如长度、特殊字符等
    if (strlen($nickname) < 2 || strlen($nickname) > 20) {
        ShowMsg('昵称长度必须在2-20个字符之间!', '-1');
        exit();
    }
    // ... 继续原有的插入数据库逻辑 ...
}

第三步:修改数据库结构 (phpMyAdmin)

你在注册页面增加的 nickname 字段,必须存在于数据库的对应表中,否则程序会报错。

DedeCMS 的会员信息主要存储在 #@__member 表中。

操作步骤:

  1. 登录你的 phpMyAdmin
  2. 选择你的 DedeCMS 数据库。
  3. 点击 #@__member 表(dede_member)进行“结构”编辑。
  4. 点击“添加”一个新字段。
    • 字段名nickname
    • 类型varchar (和用户名类型一致)
    • 长度/值50 (设置一个合适的长度)
    • collation utf8_general_ci
    • 属性utf8_general_ci
    • Null (不允许为空)
    • 默认:留空
  5. 点击“执行”保存。

注意:如果你修改了 #@__member 表,并且会员模型(#@__membermodel)也需要更新,请同步修改模型配置,但这通常不是必须的,除非你使用了复杂的模型字段。


第四步:修改会员中心 (space.php)

注册完成后,用户可以在会员中心查看和编辑自己的信息,你需要修改会员中心,让新增的“昵称”字段可以显示和修改。

修改资料编辑页面 (/member/edit_info.php)

  1. 增加编辑表单: 在 /member/edit_info.php 文件中,找到编辑资料的表单,像在注册页面一样,增加一个 nickname 的输入框。

    <!-- 在适当位置添加 -->
    <tr>
        <td height="45">昵称:</td>
        <td>
            <input type="text" name="nickname" id="nickname" size="20" class="intxt" value="<?php echo $space['nickname']; ?>" />
        </td>
    </tr>
  2. 处理更新逻辑: 在 edit_info.php 文件中找到处理更新的 PHP 代码,将 nickname 字段包含在更新语句中。

    // 找到更新资料的 SQL 语句
    $upQuery = "UPDATE `#@__member` SET `sex`='$sex', `birthday`='$birthday', `resideplace`='$resideplace', `qq`='$qq', `scores`='$scores' WHERE `mid`='".$uid."'";
    // 修改为
    $upQuery = "UPDATE `#@__member` SET `sex`='$sex', `birthday`='$birthday', `resideplace`='$resideplace', `qq`='$qq', `scores`='$scores', `nickname`='$nickname' WHERE `mid`='".$uid."'";

修改会员首页 (/member/space.php)

在会员首页显示昵称,需要修改模板文件。

  1. 找到模板文件: DedeCMS 的会员中心模板通常位于 /member/templets/ 目录下,首页模板是 space.htm

  2. 修改显示逻辑: 打开 /member/templets/space.htm,找到显示用户名的地方,将其修改为显示昵称。

    <!-- 原始代码可能类似 -->
    <span class="text_title">您好,<strong><?php echo $space['userid']; ?></strong> 欢迎光临!</span>
    <!-- 修改为显示昵称,如果昵称为空则显示用户名 -->
    <span class="text_title">您好,<strong><?php echo ($space['nickname'] ? $space['nickname'] : $space['userid']); ?></strong> 欢迎光临!</span>

总结与注意事项

  1. 一致性:确保在注册页面、注册处理逻辑、数据库、会员资料编辑和会员中心这五个地方都正确地处理了新增的字段。
  2. 安全性:始终对用户输入进行过滤和验证,防止 SQL 注入和 XSS 攻击,DedeCMS 自带的函数如 HtmlReplace() 可以帮助你过滤 HTML。
  3. 模型系统:对于更复杂的字段(如多行文本、图片、下拉选择等),建议使用 DedeCMS 的“会员模型”系统进行管理,而不是直接修改核心文件,直接修改核心文件在升级时可能会被覆盖。
  4. 测试:完成所有修改后,务必在网站上完整地测试一遍注册、登录、查看资料、编辑资料的全过程,确保一切正常。

通过以上四个步骤,你就可以成功地自定义 DedeCMS 的会员注册功能了,如果你遇到具体问题,可以提供你修改的代码片段和报错信息,我可以帮你进一步分析。

-- 展开阅读全文 --
头像
dede网站模板下载
« 上一篇 今天
dede如何批量移动栏目?
下一篇 » 今天

相关文章

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

目录[+]