PHP:在旁加载和表单提交时设置时间戳


PHP: Set timestamp on sideload and on form submit?

一个表单中怎么可能有两个不同的时间戳?第一个必须具有来自旁加载的值,第二个来自提交,以便我可以比较这些值并检查表单是否在一段时间内发送?

一个简单的解决方案是在会话变量中维护创建时间:

$_SESSION['createdAt'] = time();
提交

表单后,您始终可以获取提交时间的时间戳并比较两者:

$submittedAt = time();
$timeToFillForm = $submittedAt - $_SESSION['createdAt'];

如果您确实想要它在表单中,您可以在表单创建期间添加隐藏输入(而不是在会话中存储"createdAt"时间戳)。

<input type='hidden' name='createdAt' value='<?php echo time() ?>' />   

提交时:

$submittedAt = time();
$timeToFillForm = $submittedAt - $_POST['createdAt'];

但是,如果你对在一个表单中有两个时间戳一无所知,你可能需要一些JS/jQuery:

 $("#myForm").submit(function(e) {
      var input = $("<input>").attr("type", "hidden").attr("name", "submittedAt").val(Date.now());
      $("#myForm").append(input);
 });

以便我可以比较值并检查表单是否在一段时间之间发送?

基本上,您想知道表单从多少时间发送给客户?您可以发送包含初始请求时间的输入,以计算收到表单时经过的时间。

<?php
echo '<input name="INITIAL_REQUEST_TIME" type="hidden" value="'.$_SERVER['REQUEST_TIME'].'">';

文收到表格,经过的时间是:

<?php
echo date( 'H:i:s', $_SERVER['REQUEST_TIME'] - $_POST['INITIAL_REQUEST_TIME'] );