织梦自定义表单怎么做提交页面
织梦自定义表单(diyform)用于在线报名、留言反馈、问卷调查等场景,是站点与用户互动的核心功能。本文从建表到调用、从邮件提醒到防垃圾,给出完整的可落地实现。
一、自定义表单的适用场景
- 在线报名:课程报名、活动报名;
- 客户留言:售前咨询、售后反馈;
- 问卷调查:用户满意度、产品调研;
- 资源申请:资料下载、试用申请。
织梦把每个表单存在独立数据表 dede_diyformN,字段可自定义,提交数据后台可视化管理。
二、第一步:创建自定义表单
- 后台
核心 - 频道模型 - 自定义表单 - 添加新的自定义表单; - 填写表单名称(如“在线报名”)、数据表名(如
baoming); - 模板文件:默认
post.htm(提交页)、list.htm(列表页)、view.htm(查看页); - 提交后记录
diyid(表单 ID)。
三、第二步:添加字段
进入表单详情 → 字段管理 - 添加新字段,常见字段:
| 字段名 | 字段标题 | 类型 |
|---|---|---|
| name | 姓名 | 单行文本 |
| phone | 电话 | 单行文本 |
| 邮箱 | 单行文本 | |
| course | 报名课程 | 下拉框 |
| message | 备注 | 多行文本 |
四、第三步:制作前台提交页面
织梦默认表单模板较简陋,建议自定义。在 /templets/plus/ 下创建 post_diyform1.htm(diyid=1):
<form action="/plus/diy.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="action" value="post" />
<input type="hidden" name="diyid" value="1" />
<input type="hidden" name="do" value="2" />
<div class="form-item">
<label>姓名 <span class="required">*</span></label>
<input type="text" name="name" required placeholder="请输入姓名" />
</div>
<div class="form-item">
<label>电话 <span class="required">*</span></label>
<input type="tel" name="phone" pattern="1[3-9]\d{9}" required />
</div>
<div class="form-item">
<label>报名课程</label>
<select name="course">
<option value="织梦入门">织梦入门</option>
<option value="SEO优化">SEO优化</option>
</select>
</div>
<div class="form-item">
<label>备注</label>
<textarea name="message" rows="4"></textarea>
</div>
<button type="submit">提交报名</button>
</form>
访问地址:http://www.yourdomain.com/plus/diy.php?action=post&diyid=1
五、第四步:提交后处理
1. 自定义提示页面
修改 /plus/diy.php 的成功跳转:
// 找到 showmsg('提交成功', 0); 改为
ShowMsg('提交成功,我们会尽快联系您!', '/baoming-success.html');
exit;
或在 /templets/plus/ 创建 diy_success.htm 作为成功页。
2. 邮件提醒管理员
在 /plus/diy.php 提交入库后追加:
// 发送邮件通知
$mailtitle="新报名:{$name} - {$phone}";
$mailbody="姓名:{$name}\n电话:{$phone}\n课程:{$course}\n备注:{$message}";
$mailtype="TXT";
$cfg_smtp_server=$cfg_smtp_server;
$cfg_smtp_usermail=$cfg_smtp_usermail;
$cfg_smtp_password=$cfg_smtp_password;
$cfg_smtp_port=$cfg_smtp_port;
$smtp=new smtp($cfg_smtp_server, $cfg_smtp_port, true, $cfg_smtp_usermail, $cfg_smtp_password);
$smtp->debug=false;
$smtp->sendmail($cfg_smtp_usermail, $cfg_webname, $name, $mailtitle, $mailbody, $mailtype);
六、第五步:防垃圾提交
1. 验证码
表单加验证码字段:
<input type="text" name="validate" placeholder="验证码" />
<img id="validateImg" onclick="this.src='/include/vdimgck.php?'+Math.random()" src="/include/vdimgck.php" alt="验证码" />
/plus/diy.php 校验:
session_start();
if(strtolower($_POST['validate']) !=$_SESSION['securimage_code_value']){
ShowMsg('验证码错误', '-1');
exit;
}
2. 时间间隔限制
session_start();
if(isset($_SESSION['last_submit']) && time() - $_SESSION['last_submit'] < 60){
ShowMsg('提交过于频繁,请稍后再试', '-1');
exit;
}
$_SESSION['last_submit']=time();
3. Token 防跨站
表单加隐藏 token,/plus/diy.php 校验,避免被外部站直接 POST。
七、第六步:后台管理提交数据
后台 核心 - 自定义表单 - 在线报名 - 管理数据:
- 查看每条提交记录;
- 导出为 Excel(需插件或自定义导出);
- 删除无效数据;
- 修改字段顺序与必填属性。
八、第七步:表单样式美化
表单容器 CSS:
.form-item{margin:14px 0}
.form-item label{display:block;margin-bottom:6px;font-weight:bold}
.form-item input,.form-item select,.form-item textarea{
width:100%;padding:10px;border:1px solid #ccc;border-radius:4px;font-size:15px
}
.form-item input:focus{border-color:var(--main);outline:none}
.required{color:#e53935}
button{background:var(--main);color:#fff;border:none;padding:12px 30px;border-radius:4px;cursor:pointer}
button:hover{background:var(--dark)}
九、注意事项
- 表单字段名不要用 MySQL 保留字(如
order、group); - 手机号、邮箱要做格式校验,避免垃圾数据;
- 提交数据要定期备份,自定义表单不在主备份范围;
- 表单页 URL 要在 robots.txt 中 Disallow,避免被搜索引擎收录。
自定义表单是织梦与用户互动的桥梁,做好“字段设计 + 样式美化 + 防垃圾 + 邮件提醒”四件事就能满足绝大多数业务需求。建议上线后持续观察提交数据质量,根据真实反馈调整字段与校验规则,让表单成为站点转化与用户运营的有效入口。