chronoforms V5: controllo codice fiscale

Di recente ho avuto bisogno di creare un form che oltre ad avere i soliti campi nome e cognome avesse anche quello per inserire il codice fiscale. Presto mi sono reso conto che senza nessun controllo questo campo era quasi inutile. Avrei potuto validarlo e chiedere il controllo sul numero di caratteri, in fondo il codice fiscale è formato da 16 caratteri......si ma in quale forma? Il codice fiscale non sono solo 16 "digiti" messi li a capocchia del'elefante, ma una serie di numeri e lettere che hanno un significato solo se posizionati in modo giusto, inoltre non sono utilizzabili tutte le lettere e non tutte le lettere e numeri vanno allo stesso posto.

Realizziamo un form con un campo per l'inserimento del codice fiscale

Testiamo il Form per il controllo del codice fiscale creato con chronoforms V5

Chronoform V5, controlliamo il codice fiscale:

In rete gli script in PHP per il controllo del codice fiscale abbondano, il mio problema è che dovevo farlo funzionare dentro un form realizzato con chronoform V5, così mi sono messo all'opera per cercare di integrare la parte "meccanica" dello script con il mio form e mi pare di esserci riuscito.

Vediamo intanto cosa occorre per il nostro form: Una text box ed un pulsante piazzati nella zona "DESIGN", mentre nella zona "SETUP" ho inserito il classico "HTML (Render Form)" in "On load" senza il quale non vedremmo nessun form nel front-end di joomla o di wordpress. Si chronoforms esiste anche per wordpress anche se per me è un controsenso!

 In "On submit" inseriremo invece un "Event Switcher", e al suo interno in "On success" inseriremo un "Display Message", mentre in "On fail" inserire un altro "Display Message" e subito sottto un "Event Loop"

Nell'elemento "Event Switcher" inseriremo del codice PHP che vedremo più avanti. Per i curiosi, questo elemento si comporta così: se il codice che fa il controllo sul codice fiscale viene eseguito correttamente viene attivato ciò che abbiamo messo dentro "On success", mentre se il rileva che il codice fiscale è scritto in una forma errata viene esguito cosa abbiamo messo dentro "On fail".

In pratica se il controllo del codice fiscale passa, visualizzeremo un messaggio scritto dentro l'elemento "Display Message", mentre se il codice fiscale risulta errato, prima riceveremo un messaggio da un ulteriore "Display Message" e poi l'elemento "Event Loop" ci riporterà in condizione iniziale per ripetere l'inserimento.

Chronoform V5, realizziamo il controllo del codice fiscale

 Di seguito il codice PHP da inserire dentro "Event Switcher"

<?php
if (ereg("^[0-9]{11}$", $form->data['cf'])) {
$form->validation_errors['cf'] = "Il codice fiscale inserito è relativo ad una persona giuridica.";
  return 'fail';
}
elseif
(!ereg("^[a-zA-Z]{6}[0-9]{2}[a-zA-Z]{1}[0-9]{2}[a-zA-Z]{1}[0-9]{3}[a-zA-Z]{1}$",
$form->data['cf'])) {
$form->validation_errors['cf'] = "Errore, il codice fiscale contiene caratteri non validi o non è della lunghezza esatta.";
  return 'fail';
}
else {
  $s=0;
  for ($i = 1; $i <= 13; $i += 2 ){
      $c = $form->data['cf'][$i];
      if ('0' <= $c && $c <= '9') {
    $s += ord($c) - ord('0');
      }
      else {
    $s += ord($c) - ord('A');
      }
  }
  for ($i = 0; $i <= 14; $i += 2 ) {
      $c = $form->data['cf'][$i];
      switch( $c ){
    case '0':  $s += 1;  break;
    case '1':  $s += 0;  break;
    case '2':  $s += 5;  break;
    case '3':  $s += 7;  break;
    case '4':  $s += 9;  break;
    case '5':  $s += 13;  break;
    case '6':  $s += 15;  break;
    case '7':  $s += 17;  break;
    case '8':  $s += 19;  break;
    case '9':  $s += 21;  break;
    case 'A':  $s += 1;  break;
    case 'B':  $s += 0;  break;
    case 'C':  $s += 5;  break;
    case 'D':  $s += 7;  break;
    case 'E':  $s += 9;  break;
    case 'F':  $s += 13;  break;
    case 'G':  $s += 15;  break;
    case 'H':  $s += 17;  break;
    case 'I':  $s += 19;  break;
    case 'J':  $s += 21;  break;
    case 'K':  $s += 2;  break;
    case 'L':  $s += 4;  break;
    case 'M':  $s += 18;  break;
    case 'N':  $s += 20;  break;
    case 'O':  $s += 11;  break;
    case 'P':  $s += 3;  break;
    case 'Q':  $s += 6;  break;
    case 'R':  $s += 8;  break;
    case 'S':  $s += 12;  break;
    case 'T':  $s += 14;  break;
    case 'U':  $s += 16;  break;
    case 'V':  $s += 10;  break;
    case 'W':  $s += 22;  break;
    case 'X':  $s += 25;  break;
    case 'Y':  $s += 24;  break;
    case 'Z':  $s += 23;  break;
      }
  }
if( chr($s%26+ord('A'))!=$cf[15] ){
   return 'success';
} else {
  return 'fail';
}
}
?>

Inseriamo nel "Display Message" dentro "On success" il codice sottostante, un messaggio abbinato ad una classe di bootstrap che farà apparire il messaggio di conferma con uno sfondo VERDE.

<div class="alert alert-success" role="alert">
<p>il tuo codice fiscale è corretto, grazie.</p>
</div>

Inseriamo nel "Display Message" dentro "On fail" il codice sottostante, un messaggio abbinato ad una classe di bootstrap che farà apparire il messaggio di conferma con uno sfondo ROSSO.

<div class="alert alert-danger" role="alert">
<p>Attenzione, il tuo codice fiscale non è; corretto!</p>
</div>

Sempre dentro "On fail" inserite un "Event Loop".

Scarica il backup del form per il controllo del codice fiscale realizzato con chronoforms V5

{phocadownload view=file|id=17|target=s}

Questo guida termina qui, se avete qualche dubbio postate nei commenti, cercherò di rispondervi.

Se la guida vi è piaciuta e sopratutto vi è stata di utilità, potete ringraziarmi offrendomi un caffè o semplicemente cliccando su qualche banner.

offrimi un caffè