- 修改数据库:在
dede_member表中增加新的字段。 - 修改前台模板:在注册页面的模板文件中添加新的表单元素。
- 修改后台处理文件:让织梦能够处理和保存新提交的字段数据。
下面我将用一个具体的例子——增加“性别”和“手机号”两个选项——来详细讲解整个流程。

(图片来源网络,侵删)
第一步:修改数据库
这是最基础的一步,我们需要在存储会员信息的数据库表里为新增的字段预留位置。
-
登录你的网站数据库管理工具(如 phpMyAdmin)。
-
选择织梦的数据库,找到
dede_member表。 -
点击“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适合存储手机号,因为不是所有用户都会填写。
第二步:修改前台注册模板
我们要让用户在注册页面上能看到并填写这些新选项。
-
找到注册模板文件: 这个文件通常位于
/templets/plus/reg-new.htm,如果你的网站使用了其他模板,请找到对应的文件。 -
编辑模板文件: 在
<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和布局。
第三步:修改后台处理文件
这是最关键的一步,织梦需要知道如何将新字段的数据存入数据库。
-
找到处理注册的PHP文件: 该文件位于
/member/reg_new.php。 -
修改文件内容: 用代码编辑器打开
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数组中的元素顺序必须与SQLVALUES子句中的 占位符顺序严格一致,否则数据就会存错位置。
第四步:更新会员资料表单(可选但推荐)
用户注册后,可能需要修改这些新增的信息,你也需要修改会员中心的资料修改页面。
- 找到修改资料模板:
/templets/plus/editinfo.htm。 - 找到修改资料处理文件:
/member/editinfo.php。
修改方法与注册页面类似:
- 在
editinfo.htm中添加与注册页面相同的表单元素。 - 在
editinfo.php中,找到更新数据的SQL语句(通常是UPDATE语句),并增加对新字段sex和mobile的更新逻辑。
通过以上四个步骤,你就可以成功地为织梦会员注册增加新的选项了。
流程回顾:
- 数据库:
ALTER TABLE增加字段。 - 前台模板:在
reg-new.htm中添加input或select表单。 - 后台处理:在
reg_new.php中修改SQL插入语句,处理新数据。 - (可选)会员中心:同步修改
editinfo.htm和editinfo.php以支持资料更新。
通用技巧:
- 每增加一个字段,就重复以上三步(或四步)。
- 字段名最好使用英文字母,避免使用特殊字符。
- 修改文件前,请务必备份原文件,以防出错。
