在使用Dedecms CMS构建网站时,自定义表单是一项非常实用的功能,例如用于收集客户留言等信息。然而,有时我们需要进一步了解用户提交表单的具体时间以及他们的IP地址,这对于数据分析和安全性检查尤为重要。

经过研究发现,许多教程提供的解决方案过于复杂,甚至需要引入额外的JS文件。但实际上,Dedecms本身已经具备获取IP地址和时间的功能,因此我们可以通过简单的代码修改实现这一需求。

以下是具体的操作步骤:

首先,打开 `plus/diy.php` 文件,在大约第69行的位置找到以下代码:


if($fieldinfo[1] == 'textdata') 
{ 
    ${$fieldinfo[0]} = FilterSearch(stripslashes(${$fieldinfo[0]})); 
    ${$fieldinfo[0]} = addslashes(${$fieldinfo[0]}); 
}
    


接着,在这段代码之后添加以下内容:


if($fieldinfo[0] == 'ip')
{
    ${$fieldinfo[0]}=GetIP();
}
if($fieldinfo[0] == 'time')
{
    ${$fieldinfo[0]}=date("Y-m-d H:i:s");
}
    


完成上述修改后,接下来需要在自定义表单中新增两个字段:

- IP地址:字段名为 `ip`
- 提交时间:字段名为 `time`

注意,字段名称必须与 `diy.php` 文件中添加的字段名保持一致。

此外,当新增表单字段后,请记得更新表单中的 `dede_fields` 和 `dede_fieldshash` 这两项的值。这是很多站长容易忽略的步骤,如果不进行更新,后台将无法正确接收新增字段的内容。

最后,在表单页面中调用这两个字段,使用以下隐藏输入框代码:


<input type="hidden" name="ip" id="ip" value="">
<input type="hidden" name="time" id="time" value="">
    


通过设置 `type="hidden"`,可以将这两个字段隐藏起来,避免影响用户体验,同时确保代码正常运行。

至此,用户每次提交表单时,Dedecms后台都会自动记录其IP地址和提交时间。这项功能不仅有助于提高数据的可追溯性,还能为网站的安全管理提供重要支持。