PHP: check per il codice fiscale

Ecco uno scrip che effettua il check del codice fiscale (calcola cioè la lettera di controllo e verifica se quella inserita dall’utente corrisponde con essa). 

<?php
if(!isset($_POST['cf']))
{
    echo"Devi inserire il codice fiscale <br>";
    echo"<A href=\"javascript:history.back()\">Torna indietro</A><br>";
    die();
}
if(strlen($_POST['cf'])!=16)
{
    echo"Codice fiscale non valido <br>";
    echo"<A href=\"javascript:history.back()\">Torna indietro</A><br>";
    die();
}
if(!eregi("^[A-Z0-9]+$", $_POST['cf']))
{
    echo"Hai inserito caratteri non validi per il codice fiscale<br>";
    echo"<A href=\"javascript:history.back()\">Torna indietro</A><br>";
    die();
}
$stringa=strtoupper($_POST['cf']);
echo"$stringa<br>";
$stringamodificata="0$stringa"; //0 carattere fittizio di inizio stringa
for($i=0; $i<17; $i++)
    $carattere[$i]=substr($stringamodificata, $i, 1);
for($i=1; $i<16; $i++)
{    
    if ($i%2 == 0)
    {    
            switch($carattere[$i])
            {
            case '0': $valore[$i]='0'; break;
            case '1': $valore[$i]='1'; break;
            case '2': $valore[$i]='2'; break;
            case '3': $valore[$i]='3'; break;
            case '4': $valore[$i]='4'; break;
            case '5': $valore[$i]='5'; break;
            case '6': $valore[$i]='6'; break;
            case '7': $valore[$i]='7'; break;
            case '8': $valore[$i]='8'; break;
            case '9': $valore[$i]='9'; break;
            case 'A': $valore[$i]='0'; break;
            case 'B': $valore[$i]='1'; break;
            case 'C': $valore[$i]='2'; break;
            case 'D': $valore[$i]='3'; break;
            case 'E': $valore[$i]='4'; break;
            case 'F': $valore[$i]='5'; break;
            case 'G': $valore[$i]='6'; break;
            case 'H': $valore[$i]='7'; break;
            case 'I': $valore[$i]='8'; break;
            case 'J': $valore[$i]='9'; break;
            case 'K': $valore[$i]='10'; break;
            case 'L': $valore[$i]='11'; break;
            case 'M': $valore[$i]='12'; break;
            case 'N': $valore[$i]='13'; break;
            case 'O': $valore[$i]='14'; break;
            case 'P': $valore[$i]='15'; break;
            case 'Q': $valore[$i]='16'; break;
            case 'R': $valore[$i]='17'; break;
            case 'S': $valore[$i]='18'; break;
            case 'T': $valore[$i]='19'; break;
            case 'U': $valore[$i]='20'; break;
            case 'V': $valore[$i]='21'; break;
            case 'W': $valore[$i]='22'; break;
            case 'X': $valore[$i]='23'; break;
            case 'Y': $valore[$i]='24'; break;
            case 'Z': $valore[$i]='25'; break;
            }
    
    }    

    else
    {
        switch($carattere[$i])
        {
            case '0': $valore[$i]='1'; break;
            case '1': $valore[$i]='0'; break;
            case '2': $valore[$i]='5'; break;
            case '3': $valore[$i]='7'; break;
            case '4': $valore[$i]='9'; break;
            case '5': $valore[$i]='13'; break;
            case '6': $valore[$i]='15'; break;
            case '7': $valore[$i]='17'; break;
            case '8': $valore[$i]='19'; break;
            case '9': $valore[$i]='21'; break;
            case 'A': $valore[$i]='1'; break;
            case 'B': $valore[$i]='0'; break;
            case 'C': $valore[$i]='5'; break;
            case 'D': $valore[$i]='7'; break;
            case 'E': $valore[$i]='9'; break;
            case 'F': $valore[$i]='13'; break;
            case 'G': $valore[$i]='15'; break;
            case 'H': $valore[$i]='17'; break;
            case 'I': $valore[$i]='19'; break;
            case 'J': $valore[$i]='21'; break;
            case 'K': $valore[$i]='2'; break;
            case 'L': $valore[$i]='4'; break;
            case 'M': $valore[$i]='18'; break;
            case 'N': $valore[$i]='20'; break;
            case 'O': $valore[$i]='11'; break;
            case 'P': $valore[$i]='3'; break;
            case 'Q': $valore[$i]='6'; break;
            case 'R': $valore[$i]='8'; break;
            case 'S': $valore[$i]='12'; break;
            case 'T': $valore[$i]='14'; break;
            case 'U': $valore[$i]='16'; break;
            case 'V': $valore[$i]='10'; break;
            case 'W': $valore[$i]='22'; break;
            case 'X': $valore[$i]='25'; break;
            case 'Y': $valore[$i]='24'; break;
            case 'Z': $valore[$i]='23'; break;
        }
    }
}

for($i=1; $i<16; $i++)
    $somma+=$valore[$i];
$controllo=$somma%26;

switch($controllo)
{
    case '0': $letteracontrollo='A'; break;
    case '1': $letteracontrollo='B'; break;
    case '2': $letteracontrollo='C'; break;
    case '3': $letteracontrollo='D'; break;
    case '4': $letteracontrollo='E'; break;
    case '5': $letteracontrollo='F'; break;
    case '6': $letteracontrollo='G'; break;
    case '7': $letteracontrollo='H'; break;
    case '8': $letteracontrollo='I'; break;
    case '9': $letteracontrollo='J'; break;
    case '10': $letteracontrollo='K'; break;
    case '11': $letteracontrollo='L'; break;
    case '12': $letteracontrollo='M'; break;
    case '13': $letteracontrollo='N'; break;
    case '14': $letteracontrollo='O'; break;
    case '15': $letteracontrollo='P'; break;
    case '16': $letteracontrollo='Q'; break;
    case '17': $letteracontrollo='R'; break;
    case '18': $letteracontrollo='S'; break;
    case '19': $letteracontrollo='T'; break;
    case '20': $letteracontrollo='U'; break;
    case '21': $letteracontrollo='V'; break;
    case '22': $letteracontrollo='W'; break;
    case '23': $letteracontrollo='X'; break;
    case '24': $letteracontrollo='Y'; break;
    case '25': $letteracontrollo='Z'; break;
}
if($carattere[16]!=$letteracontrollo)
    echo"Il codice fiscale inserito non è valido"; 
?>

A presto.

PHP: check per il codice fiscaleultima modifica: 2008-06-08T14:40:00+02:00da nazarenolatella
Reposta per primo quest’articolo