Validation d'un formulaire en fonction de l'heure

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Validation d'un formulaire en fonction de l'heure

par netsupra » 09 nov. 2006, 19:51

Merci ;)

par Ajoloca » 09 nov. 2006, 05:19

Bonjour,
Une solution consiste à jouer avec l'interval (en millisecondes) entre le moment présent et l'heure d'envoie du formulaire.
Et on utilise après la fonction JS setInterval() qui permet l'exécution d'une tache dans un lapse de temps (calculé en milisecondes)

Ça nous donnerai QQ chose du style
<?php
$heureEnvoie = 79200; // 22h00 en secondes
$maintenant = date('H') * 3600 + date('i') * 60 + date('s');
/*
** CALCUL DU NOMBRE DE MILLIEMES DE SECONDE A ATTENDRE
** Si $maintenant > $heureEnvoie on change de jour
** Exp: Il est 22h et on doit l'envoyer à 03h
*/
$interval = ($maintenant > $heureEnvoie ?  (86800 - $maintenant) + $heureEnvoie : $heureEnvoie - $maintenant) * 1000;
?>
<html>
<head>
	<script type="text/JavaScript">
		// Déclaration de l'dentifiant du timer
		timerId = null;
		
		function evoieFormulaire(){
			// Annule toute nouvelle action
			clearInterval(timerId);
			// Soumission du formulaire
			document.ma_form.submit(); 
		}
	</script>
</head>
<body onLoad="JavaScript:timerId = setInterval('evoieFormulaire()', <?php echo $interval;?>);">
<form name="ma_form" action="ma_page.php" method="post">
</form>
</body>
</html>

par netsupra » 09 nov. 2006, 01:23

:D Exactement :D
As-tu une idée, Ô grand modo de comment faire :D
Je suis sur que ma question est debile mais la je seche :'(

par albat » 09 nov. 2006, 01:19

Si j'ai bien compris, le principe serait :
  1. PHP récupère l'heure du serveur
  2. Javascript compare cette heure serveur récupérée par PHP avec l'heure de référence
  3. Si égalité, Javascript lance automatiquement l'envoi/validation du formulaire
C'est ça ? :-s

par netsupra » 09 nov. 2006, 01:14

Justement, c'est assez rare mais la je seche totalement donc je peux pas te fournir de code.
J'ai l'heure du serveur a un instant donné que je converti en seconde.
Il faut que j'ai deux chose : d'une part un compteur qui s'incremente toutes les secondes, et d'autres part, une fonction qui me permet lorsque le compteur atteint une valeur donnée de valider un formulaire se trouvant sur une page.
PS : je suis developpeur confirmé en PHP mais débutant en javascript.

par albat » 09 nov. 2006, 01:05

Vu d'ici, c'est pas bien compréhensible, ton truc... :?
Un bout de code pourrait peut-être nous aider à y voir un peu plus clair, non ?

par netsupra » 09 nov. 2006, 00:56

Oui et pour valider un formulaire sans refresh -> Javascript, et c'est justement sur ce point que j'ai besoin d'aide...
Merci,
Netsupra

par albat » 09 nov. 2006, 00:46

Pour récupérer l'heure du serveur : PHP
Pour récupérer l'heure du client : Javascript

Validation d'un formulaire en fonction de l'heure

par netsupra » 09 nov. 2006, 00:42

Bonjour,
Je souhaiterais soumettre un formulaire qui existe deja sur une page et auquel je ne peux pas toucher à une heure précise. Si possible, il faudrait que le script récupère non pas l'heure du PC mais l'heure du serveur.
Je debute en javascript et je n'ai aucune idée de la fonction a faire.
Netsupraat