织梦会员注册新增选项,如何适配旧版数据?

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 织梦建站 正文
  1. 修改数据库:在 dede_member 表中增加新的字段。
  2. 修改前台模板:在注册页面的模板文件中添加新的表单元素。
  3. 修改后台处理文件:让织梦能够处理和保存新提交的字段数据。

下面我将用一个具体的例子——增加“性别”和“手机号”两个选项——来详细讲解整个流程。

织梦会员注册增加选项
(图片来源网络,侵删)

第一步:修改数据库

这是最基础的一步,我们需要在存储会员信息的数据库表里为新增的字段预留位置。

  1. 登录你的网站数据库管理工具(如 phpMyAdmin)。

  2. 选择织梦的数据库,找到 dede_member 表。

  3. 点击“SQL”选项卡,执行以下两条 SQL 语句来增加 sex (性别) 和 mobile (手机号) 字段。

    -- 增加 性别 字段,类型为 tinyint(1),0代表女,1代表男,默认值为0
    ALTER TABLE `dede_member` ADD `sex` TINYINT(1) NOT NULL DEFAULT '0' AFTER `matt`;
    -- 增加 手机号 字段,类型为 varchar(20),允许为空
    ALTER TABLE `dede_member` ADD `mobile` VARCHAR(20) DEFAULT NULL AFTER `sex`;

说明

  • AFTERmatt`表示新字段添加在matt字段之后,你也可以使用FIRST` 来放在最前面,或者直接省略,默认放在最后。
  • TINYINT(1) 通常用于存储布尔值或状态,0/1 非常适合性别。
  • VARCHAR(20)DEFAULT NULL 适合存储手机号,因为不是所有用户都会填写。

第二步:修改前台注册模板

我们要让用户在注册页面上能看到并填写这些新选项。

  1. 找到注册模板文件: 这个文件通常位于 /templets/plus/reg-new.htm,如果你的网站使用了其他模板,请找到对应的文件。

  2. 编辑模板文件: 在 <form> 标签内部,合适的位置(比如用户名和密码输入框之后)添加以下 HTML 代码。

    <div class="form-group">
        <label for="sex">性别:</label>
        <select name="sex" id="sex" class="form-control">
            <option value="0">女</option>
            <option value="1">男</option>
        </select>
    </div>
    <div class="form-group">
        <label for="mobile">手机号码:</label>
        <input type="text" name="mobile" id="mobile" class="form-control" />
    </div>

说明

  • name 属性(如 name="sex")非常重要,后台处理文件会通过这个 name 来获取用户提交的值。
  • id 属性用于前端JavaScript或CSS选择器,保持与 name 一致是个好习惯。
  • 你可以根据自己的网站样式调整 class 和布局。

第三步:修改后台处理文件

这是最关键的一步,织梦需要知道如何将新字段的数据存入数据库。

  1. 找到处理注册的PHP文件: 该文件位于 /member/reg_new.php

  2. 修改文件内容: 用代码编辑器打开 reg_new.php,找到处理表单数据的部分,通常是在 if($dopost == 'saveuser') 这个条件分支里。

    你需要找到类似 //注册用户 的注释,然后在其下方的 //注册会员 代码块中,找到 $inQuery = "INSERT INTO... 这句SQL插入语句。

    在这个SQL语句的 VALUES (...) 部分,你需要为新增加的字段添加对应的值占位符 。

    修改前(原始代码片段)

    // ... 其他代码 ...
    $inQuery = "INSERT INTO `dede_member`(mid,mtype,userid,pwd,uname,email,scores,money,sex,sign,face,uptime,joinip,safequestion,safeanswer)
                VALUES ('$mid','$mtype','$userid','$pwd','$uname','$email','$scores','$money','$sex','$sign','$face','$uptime','$joinip','$safequestion','$safeanswer');";
    // ... 其他代码 ...

    修改后(增加了 mobile 字段)

    // ... 其他代码 ...
    // 从POST数据中获取新字段的值
    $sex = isset($_POST['sex']) ? intval($_POST['sex']) : 0; // 获取性别,并转为整数
    $mobile = isset($_POST['mobile']) ? trim($_POST['mobile']) : ''; // 获取手机号,并去除首尾空格
    // 在SQL语句中增加对应的 ? 占位符
    $inQuery = "INSERT INTO `dede_member`(mid,mtype,userid,pwd,uname,email,scores,money,sex,mobile,sign,face,uptime,joinip,safequestion,safeanswer)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
    // 准备参数数组,顺序必须与SQL语句中的 ? 占位符顺序完全一致
    $arr = array(
        $mid,
        $mtype,
        $userid,
        $pwd,
        $uname,
        $email,
        $scores,
        $money,
        $sex,
        $mobile,
        $sign,
        $face,
        $uptime,
        $joinip,
        $safequestion,
        $safeanswer
    );
    // 使用 $dsql->Execute('aid', $inQuery, $arr) 来执行带参数的查询,防止SQL注入
    $dsql->Execute('aid', $inQuery, $arr);
    // ... 其他代码 ...

重要说明

  • 安全性:直接使用 $_POST['xxx'] 是不安全的,使用 intval()trim() 等函数对数据进行过滤和校验是一个好习惯。
  • SQL注入:现代的织梦版本推荐使用预处理语句(如上面的代码示例),即用 作为占位符,然后将参数放在数组中传入,这能有效防止SQL注入攻击,如果你使用的是旧版本,至少要对所有用户输入进行 htmlspecialchars() 处理。
  • 顺序$arr 数组中的元素顺序必须与SQL VALUES 子句中的 占位符顺序严格一致,否则数据就会存错位置。

第四步:更新会员资料表单(可选但推荐)

用户注册后,可能需要修改这些新增的信息,你也需要修改会员中心的资料修改页面。

  1. 找到修改资料模板/templets/plus/editinfo.htm
  2. 找到修改资料处理文件/member/editinfo.php

修改方法与注册页面类似:

  • editinfo.htm 中添加与注册页面相同的表单元素。
  • editinfo.php 中,找到更新数据的SQL语句(通常是 UPDATE 语句),并增加对新字段 sexmobile 的更新逻辑。

通过以上四个步骤,你就可以成功地为织梦会员注册增加新的选项了。

流程回顾

  1. 数据库ALTER TABLE 增加字段。
  2. 前台模板:在 reg-new.htm 中添加 inputselect 表单。
  3. 后台处理:在 reg_new.php 中修改SQL插入语句,处理新数据。
  4. (可选)会员中心:同步修改 editinfo.htmeditinfo.php 以支持资料更新。

通用技巧

  • 每增加一个字段,就重复以上三步(或四步)。
  • 字段名最好使用英文字母,避免使用特殊字符。
  • 修改文件前,请务必备份原文件,以防出错。
-- 展开阅读全文 --
头像
C语言函数参数如何设置默认值?
« 上一篇 前天
dede首页为何突然无法访问?
下一篇 » 前天

相关文章

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

目录[+]