【问题标题】:Submit today's date as a hidden form input value提交今天的日期作为隐藏表单输入值
【发布时间】:2013-02-27 03:53:01
【问题描述】:

我需要通过隐藏的表单输入字段以 yyyymmdd 格式发送当前日期。

我已经用这个 javascript 格式化了我想要的日期

function getDate()
{
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();
if(dd<10){dd='0'+dd} if(mm<10){mm='0'+mm} today = yyyy+mm+dd;
}

这是我的表单输入字段

<input type="hidden" name="startdate" onload="this.value = getDate();"/>

我尝试了几种方法将上述日期分配给我的 var startdate 并将其发送到服务器,但均未成功。

您能告诉我如何在页面加载时将日期传递到我的隐藏输入字段吗?

我想知道这是否会给安全和黑客带来任何问题?

感谢您的帮助

【问题讨论】:

  • 不能在服务器端添加日期吗?
  • 是的,我将无法访问服务器端。

标签: javascript forms date


【解决方案1】:
<input type="hidden" name="startdate" id="todayDate"/>
<script type="text/javascript">
function getDate()
{
    var today = new Date();
    var dd = today.getDate();
    var mm = today.getMonth()+1; //January is 0!
    var yyyy = today.getFullYear();
    if(dd<10){dd='0'+dd} if(mm<10){mm='0'+mm}
    today = yyyy+""+mm+""+dd;

    document.getElementById("todayDate").value = today;
}

//call getDate() when loading the page
getDate();
</script>

【讨论】:

  • 这不考虑时区。日期应该添加到服务器端,真的。
  • 这就是我所缺少的……效果很好。谢谢
【解决方案2】:

如果您将日期用于某种验证,那么为了安全起见,您最好使用服务器端脚本;这样客户就不能欺骗日期。

此外,您不应该使用&lt;input&gt;,即使您使用服务器端来生成日期,因为您仍然可以使用 Firebug 或许多其他 Web 开发工具来欺骗时间。提交的 HTTP POST(或其他)可能包含欺骗数据。但最终没有什么是 100% 安全的。

【讨论】:

  • 嗨卢克 - 日期只是为了记录提交表单的时间。表单访问者不想欺骗它,但感谢您提出这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-30
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
相关资源
最近更新 更多