dede自定义表单提交如何实现数据接收?

99ANYc3cd6
预计阅读时长 20 分钟
位置: 首页 DEDE建站 正文

第一步:在后台创建自定义表单

这是整个流程的基础,我们在后台定义需要收集哪些字段。

dede自定义表单提交
(图片来源网络,侵删)
  1. 登录 DedeCMS 后台

  2. 在左侧菜单栏找到 【核心】 -> 【自定义表单】

  3. 点击 【增加自定义表单】

  4. 填写表单信息

    dede自定义表单提交
    (图片来源网络,侵删)
    • 表单名称:给你的表单起个名字,方便识别,在线报名”、“产品咨询”等,这个名字不会在前台显示。
    • :这个会显示在提交成功后的页面上,提交成功,感谢您的参与!”。
    • 目录选择:选择一个栏目,DedeCMS 会将提交的数据作为这个栏目下的一个“文章”来存储,建议创建一个专门的“留言反馈”或“表单数据”栏目,并设置为“不生成栏目页”。
    • 列表模板:选择一个用于展示所有提交数据的列表页模板(/default/list_test.htm)。
    • 发布模板:选择一个用于展示单个提交数据详情的模板(/default/article_test.htm)。
    • 项目名称:这是最关键的部分,用于定义表单中的每一个输入项,点击 【增加字段】 来逐个添加。
      • 字段名:必须使用英文,name, tel, email, content,这会作为数据库中的字段名。
      • 字段提示:在前台表单中显示给用户的提示文字,您的姓名”、“联系电话”。
      • 字段类型:选择对应的输入类型,如 文本域(text)单行文本(text)下拉菜单(select)单选(radio)多选(checkbox)验证码(vcode) 等。
      • 是否必填:勾选此项,前台提交时该字段不能为空。
      • 默认值:可以设置一个默认显示的内容。
      • 数据字典:对于 selectradiocheckbox 等类型,在这里填写选项,格式为 选项1|选项2|选项3,性别字段可以填写 男|女
    • 启用表单:务必勾选此项,否则前台表单将无法使用。
  5. 提交保存,完成以上设置后,你的自定义表单就在后台创建好了,并且系统会自动在数据库中创建相应的数据表(如 dede_addonexample)。


第二步:在前台制作表单提交页面

我们需要创建一个网页,用户可以在上面填写并提交这个表单。

  1. 创建一个静态页面

    • 在 DedeCMS 后台,进入 【栏目】 -> 【添加栏目】,创建一个新栏目,比如叫“在线报名”。
    • 在这个栏目下,【添加文档】,创建一个新页面,标题为“在线报名表”,内容区域留空,因为我们主要使用模板。
  2. 创建表单模板

    dede自定义表单提交
    (图片来源网络,侵删)
    • 进入 【模板】 -> 【默认模板管理】
    • 找到你刚才创建的栏目(如“在线报名”),为其设置一个列表模板和文章模板,列表模板为 list_online.htm,文章模板为 article_online.htm
    • 点击 【修改】 list_online.htm 文件,将里面的内容替换为以下代码:
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">在线报名</title>
    </head>
    <body>
    <h1>在线报名</h1>
    <form action="{dede:field name='phpurl'/}/post.php?action=add&formid=1" method="post" enctype="multipart/form-data">
        <!-- {dede:php} $this->RunPhp('PrintAutoFieldsForm(1)'); {/dede:php} -->
        <!-- 或者,如果你对代码熟悉,可以手动写出所有字段,这样更可控 -->
        <div>
            <label for="name">姓名:</label>
            <input type="text" name="name" id="name" required="required" />
        </div>
        <div>
            <label for="tel">联系电话:</label>
            <input type="text" name="tel" id="tel" required="required" />
        </div>
        <div>
            <label for="email">电子邮箱:</label>
            <input type="email" name="email" id="email" />
        </div>
        <div>
            <label for="content">报名内容:</label>
            <textarea name="content" id="content" rows="5" required="required"></textarea>
        </div>
        <div>
            <label for="code">验证码:</label>
            <input type="text" name="validate" id="code" style="width:50px;" required="required" />
            <img src="{dede:global.cfg_cmspath/}/plus/vcode.php" onclick="this.src='{dede:global.cfg_cmspath/}/plus/vcode.php?'+Math.random();" title="点击刷新验证码" />
        </div>
        <div>
            <input type="submit" name="submit" value="提交" />
        </div>
    </form>
    </body>
    </html>

    代码解释

    • <form> 标签中的 action 属性是关键:
      • {dede:field name='phpurl'/} 会自动替换为你网站设置的 PHP 文件目录(通常是 /plus)。
      • post.php 是 DedeCMS 处理表单提交的核心文件。
      • action=add 表示执行“添加”操作。
      • formid=1这里的 1 是你第一步创建的自定义表单的 ID,你可以在后台【自定义表单】列表中查看每个表单对应的 ID。
    • name 属性:<input><textarea><select> 等标签的 name 属性,必须与你在后台创建的字段名(如 name, tel)完全一致。
    • 验证码:DedeCMS 自带了验证码功能,直接调用 plus/vcode.php 即可。

第三步:配置接收与处理

DedeCMS 的 post.php 文件会自动处理提交的数据,并将其存入你指定的数据库表中,你不需要额外编写 PHP 代码。

有两个非常重要的配置需要检查:

  1. 网站目录权限

    • 确保 /plus 目录及其下的 post.php 文件有写入权限(通常是 755 或 777),如果提交后数据没有保存,十有八九是权限问题。
  2. 安全设置(防止垃圾信息)

    • 为了防止机器人恶意提交,建议开启“验证码”功能。
    • 进入后台 【系统】 -> 【系统基本参数】 -> 【互动设置】
    • 找到 “未审核表单是否允许前台投稿”,建议设置为“否”,这样所有提交都需要你在后台审核后才会显示。
    • 找到 “启用验证码” 相关选项,确保开启。

第四步:查看和管理提交的数据

用户提交表单后,你可以在后台查看和管理这些数据。

  1. 进入管理界面

    • 在后台左侧菜单栏找到 【核心】 -> 管理】 -> 【自定义表单管理】
  2. 查看和审核

    • 你会看到一个列表,里面包含了所有用户提交的数据,每一行代表一次提交。
    • 你可以查看每条数据的详细内容。
    • 审核状态:通常有“待审核”和“已审核”两种状态,在【互动设置】中设置为“不允许前台投稿”后,所有新提交都会是“待审核”状态,你需要手动点击“审核”按钮,数据才会出现在你选择的栏目列表中。
    • 删除:可以删除不需要的提交记录。
  3. 前台展示(可选)

    • 你在第一步设置的 列表模板发布模板,就是用来在前台展示这些提交数据的。
    • 你可以创建一个“报名名单”页面,调用自定义表单的数据,将所有已审核的报名信息展示出来。
    • 调用方法使用 DedeCMS 的标签,
      {dede:arclist typeid='你的栏目ID' channelid='自定义表单的channelid'}
          <li>
              <h3>[field:name/]</h3>
              <p>电话:[field:tel/]</p>
              <p>内容:[field:content/]</p>
          </li>
      {/dede:arclist}
      • channelid 是自定义表单的频道ID,可以在后台【频道模型】->【自定义表单】中找到。

常见问题与解决方案 (FAQ)

  • Q: 提交后页面跳转到404或空白页?

    • A: 检查 action 中的 formid 是否正确,以及 /plus/post.php 文件是否存在且有执行权限。
  • Q: 提交了,但后台看不到数据?

    • A: 1. 检查数据库连接是否正常,2. 检查 /plus 目录权限,3. 检查是否开启了验证码,且用户输入正确,4. 检查【互动设置】中是否设置了“不允许前台投稿”,如果是,数据在“待审核”列表里。
  • Q: 如何让提交成功后跳转到指定页面?

    • A: 在 <form> 标签中加入 onsubmit 属性,或者修改 post.php 文件(不推荐,升级会覆盖),一个简单的方法是在提交成功后,通过 JS 跳转,可以在表单模板的底部加入一段 JS 代码:
      <script type="text/javascript">
      // 检测URL中是否有特定的参数,'submit_success'
      if (window.location.search.indexOf('submit_success') > -1) {
          alert('提交成功!');
          window.location.href = '/success.html'; // 跳转到你的成功页面
      }
      </script>

      post.php 中找到处理成功后的跳转代码,修改为类似 ShowMsg('提交成功!', '/success.html?submit_success', 0, 5000); 的形式。

通过以上四个步骤,你就可以在 DedeCMS 中完整地实现一个自定义表单的创建、提交、处理和管理功能了。

-- 展开阅读全文 --
头像
织梦网站栏目修改教程,新手如何快速操作?
« 上一篇 今天
dede企业网站模板怎么选?
下一篇 » 今天

相关文章

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

目录[+]