IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Vérifier qu'un utilisateur a plus de 18 ans


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Par défaut Vérifier qu'un utilisateur a plus de 18 ans
    Bonjour,

    J'ai un formulaire avec un champ "date de naissance" et je souhaite restreindre l'inscription aux moins de 18 ans mais je ne sais pas comment faire..

    voici mon code pour le moment qui vérifie seulement si "date de naissance" est vide ou pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
         if(empty($_POST['date_naissance'])){
            $errors['date_naissance'] = "Vous devez rentrer votre date de naissance";
        }
    je vous remercie pour votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Le plus courant est de créer une date au format datetime de php/mysql. Cela ouvre beaucoup de possibilités. Si $_POST['date_naissance'] est au format yyyy-mm-jj, soit par exemple 2001-12-21 il te suffira de faire :
    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
    // date aujourd'hui
    $date = new DateTime();
    // date - 18 ans
    $date_18 = $date->sub(new DateInterval('P18Y'));
     
    // si $_POST['date_naissance'] est au format date par exemple = 2001-12-25
    $date_naissance = new DateTime($_POST['date_naissance']);
     
    if($date_naissance >= $date_18)
    {
    	//le visiteur a au moins 18 ans
    }
    else
    {
    	//le visiteur a moins 18 ans
    }
    Si $_POST['date_naissance'] n'est pas au format dateTime tu pourras le convertir au format dateTime avec date_create_from_format.
    Par exemple si $_POST['date_naissance'] === '25-12-2001', le code deviendra :

    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
    // date aujourd'hui
    $date = new DateTime();
    // date - 18 ans
    $date_18 = $date->sub(new DateInterval('P18Y'));
     
    // si $_POST['date_naissance'] est au format jj-mm-yyyy, par exemple = 25-12-2001 on le converti au format dateTime avec DateTime::createFromFormat
    $date_naissance = DateTime::createFromFormat('j-m-Y', $_POST['date_naissance']);
     
    if($date_naissance >= $date_18)
    {
    	//le visiteur a au moins 18 ans
    }
    else
    {
    	//le visiteur a moins 18 ans
    }

  3. #3
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Par défaut
    salut merci pour ta réponse, mais pourquoi datetime est pas plutôt date tout court, plus logique si j'utilise uniquement les dates et pas les heures/min/sec etc ?

    mon champ est au format date..

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Bah essayes avec Date()...

  5. #5
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Par défaut
    Je viens d'essayer et j'ai adapté ton code avec mes besoins mais j'ai un message d'erreur le voici :

    Fatal error: Class 'Date' not found in C:\wamp\www\pag\register.php on line 20
    Il ne trouve pas date

    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
        if(empty($_POST['date_naissance'])){
            $errors['date_naissance'] = "Vous devez rentrer une date de naissance valide";
        }
     
    // date aujourd'hui
    $date_aujourdhui = new Date(); // LIGNE 20
    // date - 18 ans
    $date_18ans = $date_aujourdhui->sub(new DateInterval('P18Y'));
     
    // si $_POST['date_naissance'] est au format date par exemple = 2001-12-25
    $date_naissance = new Date($_POST['date_naissance']);
     
    if(!$date_naissance >= $date_18ans)
    {
      //le visiteur a PAS encore 18 ans
      $errors['date_naissance'] = "Vous devez etre majeur pour vous inscrire";
    }

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Et si tu mets "date php" dans un moteur de recherche, que dis le manuel et les exemples ?

    Sinon je t'avais donné un exemple avec dateTime parce que c'est plus générique et qui peut le plus, peut le moins...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Vérifier si l'utilisateur existe
    Par wzcocoon dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/02/2008, 11h24
  2. vérifier que l'utilisateur entre bien une heure
    Par youp_db dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/11/2006, 11h15
  3. vérifier que l'utilisateur entre bien un nombre
    Par youp_db dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 06/11/2006, 10h10
  4. Réponses: 3
    Dernier message: 12/04/2006, 13h57
  5. [c#] Vérifier une sélection utilisateur
    Par elendila dans le forum ASP.NET
    Réponses: 2
    Dernier message: 28/09/2005, 11h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo