Bonjour,

Je viens de finir ce modeste script, destiné à empêcher deux inscriptions avec une même IP dans un délais inférieur à 20 secondes. A priori il fonctionne bien, mais j'aurais besoin d'être certain qu'il est logique.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
//on récupère l'ip de l'inscrit
$ip = $_SERVER["REMOTE_ADDR"];
 
//on récupère la date unix pour la comparaison plus aisée entre deux dates
 d'inscription avec la même IP:
$dateAntiFlood=time();
 
//on crée une date inférieur de 20 secondes à celle de la date de validation:
$dateLimite=$dateAntiFlood-20;
 
//on va chercher dans la base si une IP identique au posteur s'est inscrit 
moins de 60 secondes avant celle-ci :
$affiche="SELECT  ipInscription  FROM membre WHERE ipInscription='".$ip."' 
AND dateAntiFlood > '".$dateLimite."' AND dateAntiFlood < '".$dateAntiFlood."'";
$resultat = mysql_query("$affiche");
$bob=mysql_num_rows($resultat);
if($bob>0)
{
//si on trouve une IP, on affiche un message et on insère rien :
 echo'Veuillez patienter quelques instant avant de poster à nouveau.';
;}
//si il n'y a pas de résultat, alors c'est bon et on insère
else 
{
on insère dans la base;
}
Voilà parce que dans une autre version j'avais fais une grosse erreur, il me semble : je n'avais pas fixé de fourchette dans la requête qui était :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
 
SELECT  ipInscription  
FROM membre WHERE ipInscription='".$ip."' AND dateAntiFlood > '".$dateLimite."'
Or, si je ne m'abuse, avec cette dernière requête je bloquais absolument toutes les IP identiques pour peu qu'elles aient été enregistrées au moins 20 secondes avant la date actuelle, ce qui aurait toujours été le cas.


J'ai bon ?