问题描述
我正在尝试测量从用户提交PHP表单到他们再次提交之间的时间间隔。 表单的动作是同一页,因此实际上只是刷新。 此外,用户可以再次输入相同的数据。 我需要它,以便它在页面刷新之前开始计数,因为结果必须尽可能准确。 我已经尝试了多种方法,但是没有一种方法能成功。 我简化了以下代码:
HTML表格
<form method="GET" action="index.php">
<input id="motion_image" type="image" value="1" name="x" src="img/btn1.png">
<input id="motion_image" type="image" value="2" name="x" src="img/btn2.png">
</form>
最终,我需要有一个PHP或JavaScript变量,用于说明用户按下这两个按钮中的一个需要多长时间才能再次按下两个按钮中的一个。 重要的是,计数器必须在刷新之前开始,因为变量需要尽可能准确。 此外,它需要响应,以便在5秒钟后触发一个事件(例如JavaScript警报)。 我认为没有必要包括我以前的尝试,因为它们都不成功,并且我相信可能会有更好的方法。 我对托管该站点的服务器具有完全访问权限,因此运行python子脚本并使用JSON或任何其他类似解决方案交换变量是完全可能的。
对于任何错误以及我普遍缺乏堆栈溢出技能的人表示歉意:)
谢谢
1楼
为什么不获取每个表单提交的日期? 然后比较那些日期? 您也可以将其保存到数据库中。 我希望你能有所想法。 (对不起,我应该在评论中输入这个,但是我仍然不能)
2楼
如果您可以信任用户的系统时间:
当用户单击按钮时,使用javascript获取用户的系统时间并将其发送到服务器;
在服务器上将时间保存在某个地方,例如会话或数据库;
当用户第二次单击按钮时->再次执行这些步骤;
毕竟,您可以将这些时间进行比较;
//
使用js,您还可以发送用户在页面上花费的每个时间段。 为此,每当页面加载时,都在某个变量中设置系统时间,并且当用户单击按钮时,系统会再次获取时间,并将两者同时发送至服务器以获取确切的花费时间;
3楼
在研究将localStorage与JS结合使用之后,我能够找到一个准确的解决方案。 我为可能面临相同或相似问题的其他人简化了代码。 感谢所有帮助的人:)
HTML
<form method="GET" action="index.php">
<input id="motion_image" type="image" value="1" name="x" src="img/btn1.png" onclick="return processInput(1)">
<input id="motion_image" type="image" value="2" name="x" src="img/btn2.png" onclick="return processInput(2)">
<input id="motion_image" type="image" value="3" name="x" src="img/btn2.png" onclick="return processInput(3)">
</form>
JavaScript的
function processInput(x) {
localStorage.eventType = x;
checkEventType();
}
function checkEventType() {
if (Number(localStorage.eventType) == 1) {
runningInterval = setInterval(function() {
localStorage.counter = Number(localStorage.counter) + 1;
}, 10);
} else if (Number(localStorage.eventType) == 2) {
runningInterval = setInterval(function() {
localStorage.counter = Number(localStorage.counter) - 1;
}, 10);
} else if (Number(localStorage.eventType) == 3) {
window.alert("Your counter is at " + localStorage.counter);
}
}