一个表单中怎么可能有两个不同的时间戳?第一个必须具有来自旁加载的值,第二个来自提交,以便我可以比较这些值并检查表单是否在一段时间内发送?
一个简单的解决方案是在会话变量中维护创建时间:
$_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'] );