Vous n'êtes pas identifié(e).
Pages :: 1
Bonsoir,
Je n'arrive pas à écrire une requête simple qui ferait ce que je souhaite.
Le contexte : mise en place d'un système d'inscription avec un minimum de verrous anti-spam.
J'ai donc une table « demandeInscription » contenant les champs :
- id (INT, primaire)
- courriel (VARCHAR)
- confirmation (VARCHAR, 40)
- dateDemande (DATETIME)
Lorsque quelqu'un souhaite s'inscrire, j'enregistre sa demande en remplissant dateDemande avec NOW() et confirmation avec une chaine de caractères aléatoire, puis je lui envoie un courriel contenant un URL sur lequel cliquer qui contient la chaine alétoire à récupérer avec $_GET.
Mais... Je ne veux pas que le lien soit éternellement valide !
J'ai donc commencé à écrire la fonction suivante :
$sql_req = "SELECT id FROM $tb_demandeInscription
WHERE confirmation='$chaine'
AND ( NOW() - dateDemande < $dureeValidite )"; // Cette partie est bidon
$resul_req = mysql_query( $sql_req );
$ou_req = "function estcequeConfirmationValide ( $chaine, $dureeValidite )";
erreurRequete( $sql_req, $resul_req, $ou_req );
$valide = mysql_num_rows( $resul_req );
if ( $valide == 0 ) {
$valide = false;
} else {
$valide = true;
}
return $valide;
}
Je n'ai pas encore décidé du format de $dureeValidite, mais je souhaite fortement un entier exprimant soit unnombre de jours, soit un nombre d'heures.
Hors ligne
Saluton,
Il faut te tourner vers une fonction MySQL comme TIMESTAMPDIFF(SECOND,dateDemande,NOW()) < $dureeValidite
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
C'est exactement ce qu'il me fallait !
Merci...
Comme quoi, quand une question est bien posée, on obtient rapidement une réponse sans développer un fil de discussion à l'infini
Edit:
Dommage qu'on ne puisse pas modifier le sujet du fil.
Dernière modification par dionysos (16-03-2010 19:31:30)
Hors ligne
Pages :: 1