PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 15-03-2010 20:32:22

dionysos
Membre
Lieu : Montpellier
Inscription : 18-02-2010
Messages : 24

[Résolu] Manipulation de dates

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 :

  function estcequeConfirmationValide( $chaine, $dureeValidite ) {
    global $tb_demandeInscription;

    $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

#2 16-03-2010 05:43:41

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] Manipulation de dates

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

#3 16-03-2010 19:30:28

dionysos
Membre
Lieu : Montpellier
Inscription : 18-02-2010
Messages : 24

Re : [Résolu] Manipulation de dates

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 big_smile

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

Pied de page des forums