织梦自定义表单怎么做提交页面

织梦自定义表单(diyform)用于在线报名、留言反馈、问卷调查等场景,是站点与用户互动的核心功能。本文从建表到调用、从邮件提醒到防垃圾,给出完整的可落地实现。

一、自定义表单的适用场景

织梦把每个表单存在独立数据表 dede_diyformN,字段可自定义,提交数据后台可视化管理。

二、第一步:创建自定义表单

  1. 后台 核心 - 频道模型 - 自定义表单 - 添加新的自定义表单
  2. 填写表单名称(如“在线报名”)、数据表名(如 baoming);
  3. 模板文件:默认 post.htm(提交页)、list.htm(列表页)、view.htm(查看页);
  4. 提交后记录 diyid(表单 ID)。

三、第二步:添加字段

进入表单详情 → 字段管理 - 添加新字段,常见字段:

字段名字段标题类型
name姓名单行文本
phone电话单行文本
email邮箱单行文本
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。

七、第六步:后台管理提交数据

后台 核心 - 自定义表单 - 在线报名 - 管理数据

八、第七步:表单样式美化

表单容器 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)}

九、注意事项

自定义表单是织梦与用户互动的桥梁,做好“字段设计 + 样式美化 + 防垃圾 + 邮件提醒”四件事就能满足绝大多数业务需求。建议上线后持续观察提交数据质量,根据真实反馈调整字段与校验规则,让表单成为站点转化与用户运营的有效入口。