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';              
}

Versione di PHP corrente, in script o riga di comando

Tra i linguaggi di scripting di utilizzo comune, PHP è sicuramente tra i più diffusi. Ma per tale grado popolarità non significa che per ogni progetto o soluzione ci sia la sufficiente combinazione per il corretto superamento dei requisiti per il necessario funzionamento.

Un caso di esempio comune si verifica quando per alcune librerie non sono ancora disponibili versioni recenti, oppure in caso contrario delle classi potrebbero richiedere una versione minima di PHP per poter essere utilizzate. Inoltre molte estensioni sono deprecate per l’uso in versioni più mature o disponibili solamente a partire da versioni di PHP di recente rilascio.

Questo articolo raccoglie alcuni consigli su come determinare la versione di PHP disponibile per superare qualsiasi dubbio a proposito.

PHP_Logo

Versione di PHP all’interno di script e file php

Per visualizzare la versione di PHP correntemente in uso dall’interprete, è disponibile la funzione phpversion, che restituisce una stringa contentente la notazione maggiore, inferiore e di revisione (quindi una forma completa del tipo “5.3.29”) della versione.

E’ utilizzabile come nel blocco di codice seguente:

<?php
echo 'La versione di PHP attualmente in uso è ' . phpversion();
?>

La stessa informazione è disponibile come costante predefinita PHP_VERSION :

<?php
echo 'La versione di PHP attualmente in uso è ' . PHP_VERSION;
?>

Ovviamente l’informazione può essere trattata come una stringa, quindi può essere salvata all’interno di una variabile ed utilizzata nel corpo di qualsiasi script.

Versione di PHP da linea di comando (CLI)

In alternativa, è possibile conoscere la versione dell’interprete da linea di comando (CLI) utilizzando l’opzione -v .

L’esempio seguente riporta il caso restituito da un host Linux

[root@host ~]# php -v
PHP 5.3.3 (cli) (built: Oct 31 2014 09:53:00)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
[root@host ~]#