Javascript 测量两次PHP表单提交之间的时间

Javascript 测量两次PHP表单提交之间的时间,javascript,php,python,html,json,Javascript,Php,Python,Html,Json,我试图测量从用户提交PHP表单到再次提交表单的时间段。表单的操作是同一个页面,因此只需刷新即可。此外,用户可以再次输入相同的数据。我需要它,以便在页面刷新之前开始计数,因为结果必须尽可能准确。我已经尝试了很多方法,但都没有成功。我简化了以下代码: HTML表单 <form method="GET" action="index.php"> <input id="motion_image" type="image" value="1" name="x" src="img/btn1.

我试图测量从用户提交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或任何其他类似解决方案交换变量是完全可能的

对于任何错误和我缺乏堆栈溢出技能表示歉意:)


谢谢

为什么不获取每次表单提交的日期?那么比较一下这些日期?您也可以将其保存到数据库中。我希望你能有所了解。(对不起,我本应该在评论中写下这一点,但我仍然不能)

如果您可以信任用户的系统时间:

当用户点击按钮时,用javascript获取用户的系统时间并将其发送到服务器

在服务器上,将时间节省到某个地方。。。如会话或数据库

当用户第二次单击按钮时->再次执行这些步骤

毕竟你可以把这些时间放在一起比较

//

使用js,您也可以发送用户在页面上花费的每段时间。
为此,每当加载页面时,在某个变量中设置系统时间,当用户单击按钮时,再次获取时间并将两者发送到服务器以获取准确的花费时间

在研究了本地存储与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>

您是否可以访问数据库,因为您可以将每个提交保存在数据库中并进行比较。您还可以使用Html 5 localStorage()来存储每次提交表单时的内容,并比较每次提交的内容。您想误导单个用户的提交,还是来自不同位置和机器的多个用户的提交?@NicolòCozzani,我确实可以访问MySQL,但是当试图获得响应结果时,这种方法将非常不准确。我能看到实现这一点的唯一方法是循环DB查询,这将有效地冻结站点抱歉,但我之前评论的最后一部分是关于您提到的@Nicolithus use The localStorage,这是一种在客户端保存简单信息的简单方法。是的,我早些时候成功地尝试过,但是计数器需要响应,如果达到5秒就会触发事件-抱歉,我现在更新我的问题我真的不太理解你的问题,但据我所知,你可能想:1。获取第一次用户表单提交的时间。2.获取用户第二次提交的时间。3.等待5秒钟,然后执行类似警报的操作?您可以使用setTimeout方法抱歉,我将尝试将我的代码放到更好的上下文中-我尝试测量电机运行的时间,以跟踪其位置。我不能仅仅在5“单位距离”(例如秒)后触发一个函数,因为在某个点上,由于项目的性质,它可能在负1“单位”,因此事件将在4触发,这不是我想要的,但计时器必须响应并实时更新。我相信Nicolas建议使用socket技术是最相关的,但如果你能想出更好的替代方案,他们将不胜感激:)
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);
    }
}