织梦自定义表单添加时间

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 织梦建站 正文

使用织梦自带的时间字段(最推荐、最简单)

织梦的自定义表单功能非常贴心,它已经内置了一个专门用于记录时间的字段类型,我们只需要在添加表单时选择即可。

织梦自定义表单添加时间
(图片来源网络,侵删)

操作步骤:

  1. 登录后台:使用管理员账号登录您的织梦DedeCMS后台。

  2. 进入表单管理:在左侧菜单栏中,找到并点击 【核心】 -> 发布】 -> 【自定义表单】

  3. 添加新字段

    织梦自定义表单添加时间
    (图片来源网络,侵删)
    • 在自定义表单管理页面,点击右上角的 【增加新字段】 按钮。
    • 在弹出的字段添加页面中,填写以下信息:
      • 字段名称:填写一个便于识别的英文字母名称,addtimesubmit_time注意:这里只能用英文、数字或下划线
      • 字段提示:填写在前台表单中显示给用户的提示文字,提交时间请勿填写,因为我们希望它是自动的,所以这里可以写“请勿填写”来提示用户无需手动输入。
      • 字段类型:这是最关键的一步!请选择 【时间文本】
      • 默认值:这里可以直接留空,织梦会自动处理。
  4. 保存字段:点击页面底部的 【保存】 按钮。

  5. 更新表单

    • 返回到自定义表单列表页面。
    • 找到您刚才修改的表单,点击后面的 【更新表单】 按钮。
    • 系统会根据您添加的字段,自动更新前台和后台的表单模板。
  6. 前台效果

    • 现在您访问包含该表单的前台页面,会发现表单中多了一个名为“提交时间”的文本框。
    • 重要:为了让这个时间自动填写,您需要在前台模板文件中,找到这个字段的 <input> 标签,给它加上一个 value 属性,并调用织梦的当前时间函数。
    • 找到类似这样的代码:
      <input type="text" name="addtime" id="addtime" class="intxt" />
    • 修改为:
      <input type="text" name="addtime" id="addtime" class="intxt" value="{dede:php}echo date('Y-m-d H:i:s');{/dede:php}" />
    • 这样,当用户打开页面时,这个时间框就会自动显示当前的系统时间,并且用户无法修改(虽然他们可以通过浏览器开发者工具修改,但这对于99%的场景已经足够)。
  7. 后台效果

    当用户提交表单后,您在后台查看该表单的数据时,就能看到对应的时间记录了。


修改PHP处理文件(最灵活、最稳定)

如果您不想在前台显示时间字段,或者希望时间完全由后台PHP脚本生成,不受前台任何影响,可以直接修改处理表单提交的PHP文件。

操作步骤:

  1. 找到处理文件

    • 织梦自定义表单的提交数据通常由 plus/diy.php 文件处理,请找到这个文件并下载到本地。
  2. 修改代码

    • 用代码编辑器(如VS Code, Sublime Text, Dreamweaver)打开 diy.php 文件。
    • 找到处理数据插入数据库的核心代码段,通常在文件末尾,类似下面这样:
      // 保存到主表
      $inquery = "INSERT INTO `{$diy->table}` (`id`, `{$addtime}`, ...) VALUES (NULL, '{$addtime}', ...)";
      // ... 其他数据库操作代码 ...
    • 在这个 INSERT INTO 语句中,找到您想添加时间的那个字段名(addtime)。
    • 在对应的值部分,不要使用前台传来的变量,而是直接使用PHP的 time()date() 函数来生成时间戳或格式化时间。
    • 修改前(示例):
      $inquery = "INSERT INTO `{$diy->table}` (`id`, `name`, `tel`, `addtime`) VALUES (NULL, '$name', '$tel', '$addtime')";
    • 修改后(示例):
      // 使用 date() 函数生成 'Y-m-d H:i:s' 格式的时间
      $current_time = date('Y-m-d H:i:s');
      $inquery = "INSERT INTO `{$diy->table}` (`id`, `name`, `tel`, `addtime`) VALUES (NULL, '$name', '$tel', '$current_time')";
    • 或者使用 time() 函数生成Unix时间戳:
      // 使用 time() 函数生成Unix时间戳
      $timestamp = time();
      $inquery = "INSERT INTO `{$diy->table}` (`id`, `name`, `tel`, `addtime`) VALUES (NULL, '$name', '$tel', '$timestamp')";
    • 注意:请确保您数据库中 addtime 字段的类型与您插入的时间格式匹配。
      • 如果用 date('Y-m-d H:i:s'),数据库字段应为 DATETIMEVARCHAR
      • 如果用 time(),数据库字段应为 INT
  3. 上传文件:将修改好的 diy.php 文件上传回您网站的 plus 目录,覆盖原文件。

  4. 前台模板

    • 在前台模板文件中,可以完全移除那个时间输入框,因为时间不再由前台提供,而是由后台生成。
    • 或者,如果您想在前台显示一个“只读”的时间提示,可以这样写:
      <input type="text" name="addtime" id="addtime" class="intxt" value="{dede:php}echo date('Y-m-d H:i:s');{/dede:php}" readonly="readonly" />

      readonly 属性确保用户无法修改这个值。


通过修改JS文件实现(前端实现)

这种方法通过JavaScript在用户点击提交前,给一个隐藏的时间字段赋值。

操作步骤:

  1. 找到JS文件

    • 织梦自定义表单的JS验证文件通常位于 /include/js/jquery/jquery.form.js/include/js/dedeajax2.js,更常见的是在模板文件中内嵌了JS代码。
  2. 添加JS代码

    • 在表单提交按钮的点击事件处理函数中,添加一行代码来设置时间字段的值。

    • 假设您的表单ID是 myform,时间字段名是 addtime

    • 找到类似 document.getElementById("diy").submit(); 的代码。

    • 在它前面添加如下JS代码:

      // 获取当前时间并格式化
      var now = new Date();
      var year = now.getFullYear();
      var month = now.getMonth() + 1;
      var day = now.getDate();
      var hour = now.getHours();
      var minute = now.getMinutes();
      var second = now.getSeconds();
      // 补零
      month = (month < 10 ? "0" + month : month);
      day = (day < 10 ? "0" + day : day);
      hour = (hour < 10 ? "0" + hour : hour);
      minute = (minute < 10 ? "0" + minute : minute);
      second = (second < 10 ? "0" + second : second);
      var currentTime = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
      // 将时间赋给隐藏的时间字段
      document.getElementById("addtime").value = currentTime;
    • 或者更简洁的写法:

      document.getElementById("addtime").value = new Date().toLocaleString();
  3. 前台模板

    • 在表单中,添加一个隐藏的 input 标签来接收这个时间值。
      <input type="hidden" name="addtime" id="addtime" value="" />

总结与对比

方法 优点 缺点 适用场景
自带时间字段 最简单,官方支持,更新表单即可,不易出错。 前台会显示一个输入框,需要用readonlyvalue属性控制。 绝大多数情况下的首选,特别是新手用户。
修改PHP文件 最稳定,时间与前台完全解耦,逻辑清晰,用户无法干预。 需要修改核心文件,有一定技术门槛,升级织梦时可能被覆盖。 对数据安全性要求高,或希望时间生成逻辑完全由后台控制的场景。
修改JS文件 灵活,可以在客户端做更多处理。 依赖JavaScript,如果用户禁用JS则无法获取时间;不如后端方法可靠。 特殊的前端交互需求,不推荐作为主要的时间记录方法。

强烈推荐您使用【方法一】,因为它最符合织梦的设计理念,也最安全、最易于维护。

-- 展开阅读全文 --
头像
织梦关键词采集插件如何精准高效抓取?
« 上一篇 01-09
dede list 自定义字段
下一篇 » 01-09

相关文章

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

目录[+]