Età anagrafica e verifica utente maggiorenne

Nell’attività quotidiana di un sistema che utilizza delle informazioni anagrafiche, la data di nascita è tra i dati che caratterizzano un utente o comunque un profilo riferito ad una persona fisica. Altrettanto comune è l’esigenza di poter conoscere l’età anagrafica dello stesso utente, ovvero verificare che per l’accesso ed uso di servizi siano soddisfatti dei requisiti minimi di età (es. sottoscrizione di abbonamenti, siti di e-commerce per la vendita di vino o casi simili): la classica verifica che la data di nascita corrisponda ad un maggiorenne.

In questo articolo sono presentate alcune possibili soluzioni per il calcolo dell’età anagrafica e la verifica che un profilo utente risulti maggiorenne.

PHP_Logo

Come calcolare l’età anagrafica

Per il calcolo di età si tratta di operare una differenza logica tra due date, ovvero tra la data di nascita e la data odierna.

Nello specifico il metodo utilizzato è DateTime::diff, che consente di ottenere un oggetto di tipo DateInterval contenente le informazioni di differenza tra due date

Per il trattamento delle date preferisco quando possibile formati riferibili a notazioni ISO 8601, quindi lo utilizzerò anche negli esempi di codice. Brevemente ad un utente nato il 19 maggio 1991 corrisponde la notazione 1991-05-19. Qui di seguito la dimostrazione di una veloce stesura di codice:

<?php
$sData = '1991-05-19';
$oDataNascita = new DateTime($sData);
$oDataAdesso = new DateTime();
$oDataDiff = $oDataNascita->diff($oDataAdesso);
printf("La data di nascita dell'utente nato il %s è %d.", $oDataNascita->format('j F Y'), $oDataDiff->y);
?>

Il valore tornato da diff come DateInterval per il caso specifico è utilizzato solamente per la restituzione degli anni, ma permette di richiamare oltre alle altre unità anche la differenza assoluta in giorni ( $oDataDiff->days nel caso dell’esempio).

Verificare se un utente è maggiorenne

Prendendo spunto dalle istruzioni del paragrafo precedente, può essere utile costruire una funzione che possa restituire un booleano true/false se per un valore di data di nascita ci troviamo di fronte ad un profilo di un maggiorenne.

Può anche essere utile inserire un parametro opzionale per variare l’età di soglia, qualora i requisiti siano più bassi (es. per l’accesso a delle attrazioni di luna park non adatte ai bambini ma permesse ad adolescenti) o più stringenti (es. per verifiche sul diritto al voto per il Senato della Repubblica, esercitabile a partire da 25 anni).

Segue il codice con le caratteristiche introdotte:

function maggiorenne($sData=null, $nSogliaAnni=18) {
  $bRet = false;
  if($sData == null) {
    $sData = date('Y-m-d');
  }
  $oDataNascita = new DateTime($sData);
  $oDataAdesso = new DateTime();
  $nAnni = $oDataNascita->diff($oDataAdesso)->y;
  if ($nAnni >= $nSogliaAnni) {
    $bRet = true;
  }
  return $bRet;
}
$sDataDiNascita = '1991-05-19';
$bMaggiorenne = maggiorenne($sDataDiNascita);                              if ($bMaggiorenne) {                                                     
  echo 'puoi acquistare vino, liquori e tutte le altre bevande';         
} else {                                                                 
  echo 'puoi acquistare solamente acqua e bevande gassate';              
}

Un pensiero su “Età anagrafica e verifica utente maggiorenne”

  1. It is perfect time to make some plans for the future and it’s time to be happy.
    I have read this post and if I could I want to suggest you few
    interesting things or suggestions. Maybe you could
    write next articles referring to this article.
    I wish to read even more things about it!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *