Estoy tratando de medir el período de tiempo desde que un usuario envía un formulario PHP hasta que vuelve a enviarlo. La acción del formulario es la misma página, así que efectivamente es solo una actualización. Además, el usuario puede ingresar los mismos datos nuevamente. Lo necesito para que comience a contar antes de que la página se actualice, ya que el resultado debe ser lo más preciso posible. Ya he probado varios métodos, pero ninguno de los cuales resultó en ningún éxito. He simplificado el siguiente código:

Formulario 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>

En última instancia, necesito tener una variable PHP o JavaScript de cuánto tiempo le tomó a un usuario presionar cualquiera de estos dos botones cuando presionó nuevamente cualquiera de ellos. Es importante que el contador comience antes de la actualización, ya que la variable debe ser lo más precisa posible. Además, debe ser sensible para que después de unos 5 segundos desencadene un evento (por ejemplo, una alerta de JavaScript). No sentí que fuera necesario incluir mis intentos anteriores, ya que todos fracasaron y creo que probablemente haya una mejor manera. Tengo acceso completo al servidor en el que se aloja el sitio, por lo que es completamente posible ejecutar un sub script de Python e intercambiar variables usando JSON o cualquier otra solución similar.

Disculpas por cualquier error y mi falta general de habilidades de desbordamiento de pila :)

Gracias

0
user7147926 16 feb. 2017 a las 21:02

3 respuestas

La mejor respuesta

Después de analizar el uso de localStorage con JS, pude encontrar una solución precisa. Simplifiqué mi código para otras personas que pueden enfrentar el mismo problema o un problema similar. Gracias por todos los que ayudaron :)

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);
    }
}
0
user7147926user7147926 17 feb. 2017 a las 14:35

Si puede confiar en la hora del sistema del usuario:

Cuando el usuario hace clic en el botón, obtenga la hora del sistema del usuario con javascript y envíelo al servidor;

En el servidor guarde el tiempo en algún lugar ... como sesión o db;

Cuando el usuario hizo clic en el botón por segunda vez -> repita esos pasos;

Y después de todo, puedes comparar esos momentos juntos;

//

Con js puede enviar cada período de tiempo que el usuario gasta en la página también. para eso, cada vez que se cargue la página, configure la hora del sistema en alguna variable, y cuando el usuario haga clic en los botones, obtenga la hora nuevamente y envíe ambas al servidor para obtener el tiempo de gasto exacto;

0
Amin Adel 16 feb. 2017 a las 19:01

¿Por qué no obtener la fecha de cada formulario enviado? entonces compara esas fechas? También puede guardarlo en su base de datos. Espero que tengas alguna idea. (lo siento, debería haber puesto esto en el comentario, pero aún no puedo)

0
Geoman Yabes 16 feb. 2017 a las 18:08