Files
codfiscale-php/elabora.php

482 lines
11 KiB
PHP

<?php
$nome = $_POST["nome"];
$cognome = $_POST["cognome"];
$dataNascita = $_POST["datanascita"];
$luogoNascita = strtoupper($_POST["luogonascita"]);
$provincia = strtoupper($_POST["provincia"]);
$sex = $_POST["sesso"];
$codFiscale = strtoupper($_POST["codFiscale"]);
$vocali = ['A', 'E', 'I', 'O', 'U'];
//Calcolo nome
$nvocali = [];
$nconsonanti = [];
for ($x=0; $x<strlen($nome); $x++){
if(in_array(strtoupper($nome)[$x], $vocali) == false){
array_push($nconsonanti, strtoupper($nome)[$x]);
}
else{
array_push($nvocali, strtoupper($nome)[$x]);
}
}
$codNome = [];
if(count($nconsonanti)>3){
$codNome = [$nconsonanti[0], $nconsonanti[2], $nconsonanti[3]];
}
else{
for($i=0; ($i<count($nconsonanti) && count($codNome)<3); $i++){
array_push($codNome, $nconsonanti[$i]);
}
for($y=0; ($y<count($nvocali) && count($codNome)<3); $y++){
array_push($codNome, $nvocali[$y]);
}
while(count($codNome)<3){
array_push($codNome, 'X');
}
}
//Calcolo cognome
$nvocali = [];
$nconsonanti = [];
for ($x=0; $x<strlen($cognome); $x++){
if(in_array(strtoupper($cognome)[$x], $vocali)){
array_push($nvocali, strtoupper($cognome)[$x]);
}
else{
array_push($nconsonanti, strtoupper($cognome)[$x]);
}
}
$codCognome = [];
for($i=0; ($i<count($nconsonanti) && count($codCognome)<3); $i++){
array_push($codCognome, $nconsonanti[$i]);
}
for($y=0; ($y<count($nvocali) && count($codCognome)<3); $y++){
array_push($codCognome, $nvocali[$y]);
}
while(count($codCognome)<3){
array_push($codCognome, 'X');
}
//Calcolo data nascita
$vettData = explode('-', $dataNascita);
$codAnno = $vettData[0][2] . $vettData[0][3];
switch($vettData[1]){
case "01":
$codMese = 'A';
break;
case "02":
$codMese = 'B';
break;
case "03":
$codMese = 'C';
break;
case "04":
$codMese = 'D';
break;
case "05":
$codMese = 'E';
break;
case "06":
$codMese = "H";
break;
case "07":
$codMese = 'L';
break;
case "08":
$codMese = 'M';
break;
case "09":
$codMese = 'P';
break;
case "10":
$codMese = 'R';
break;
case "11":
$codMese = 'S';
break;
case "12":
$codMese = 'T';
break;
default:
$codMese = "NIGGA";
break;
}
switch($sex){
case 'F':
$codGiorno = intval($vettData[2]) + 40;
break;
case 'M':
$codGiorno = intval($vettData[2]);
break;
default:
echo "<script>alert(\"Valore sesso non valido\");</script>";
break;
}
//Codice comune
switch($luogoNascita){
case "BIELLA":
$codComune = "A859";
break;
case "COSSATO":
$codComune = "D094";
break;
case "TORINO":
$codComune = "L219";
break;
case "CINA":
$codComune = "Z210";
break;
case "JUGOSLAVIA":
$codComune = "Z118";
break;
default:
echo "<script>alert(\"Comune non valido o non presente in base dati\");</script>";
break;
}
$codRaw = implode($codCognome) . implode($codNome) . $codAnno . $codMese . $codGiorno . $codComune;
//Calcolo carattere di controllo
//Caratteri pari
$sumPari=0;
for($i=1;$i<=strlen($codRaw);$i+=2){
switch($codRaw[$i]){
case '0':
$sumPari+=0;
break;
case '1':
$sumPari+=1;
break;
case '2':
$sumPari+=2;
break;
case '3':
$sumPari+=3;
break;
case '4':
$sumPari+=4;
break;
case '5':
$sumPari+=5;
break;
case '6':
$sumPari+=6;
break;
case '7':
$sumPari+=7;
break;
case '8':
$sumPari+=8;
break;
case '9':
$sumPari+=9;
break;
case 'A':
$sumPari+=0;
break;
case 'B':
$sumPari+=1;
break;
case 'C':
$sumPari+=2;
break;
case 'D':
$sumPari+=3;
break;
case 'E':
$sumPari+=4;
break;
case 'F':
$sumPari+=5;
break;
case 'G':
$sumPari+=6;
break;
case 'H':
$sumPari+=7;
break;
case 'I':
$sumPari+=8;
break;
case 'J';
$sumPari+=9;
break;
case 'K':
$sumPari+=10;
break;
case 'L':
$sumPari+=11;
break;
case 'M':
$sumPari+=12;
break;
case 'N':
$sumPari+=13;
break;
case 'O':
$sumPari+=14;
break;
case 'P':
$sumPari+=15;
break;
case 'Q':
$sumPari+=16;
break;
case 'R':
$sumPari+=17;
break;
case 'S':
$sumPari+=18;
break;
case 'T':
$sumPari+=19;
break;
case 'U':
$sumPari+=20;
break;
case 'V':
$sumPari+=21;
break;
case 'W':
$sumPari+=22;
break;
case 'X':
$sumPari+=23;
break;
case 'Y':
$sumPari+=24;
break;
case 'Z':
$sumPari+=25;
break;
default:
break;
}
}
$sumDispari=0;
//Caratteri dispari
for($i=0;$i<=strlen($codRaw);$i+=2){
switch($codRaw[$i]){
case '0':
$sumDispari+=1;
break;
case '1':
$sumDispari+=0;
break;
case '2':
$sumDispari+=5;
break;
case '3':
$sumDispari+=7;
break;
case '4':
$sumDispari+=9;
break;
case '5':
$sumDispari+=13;
break;
case '6':
$sumDispari+=15;
break;
case '7':
$sumDispari+=17;
break;
case '8':
$sumDispari+=19;
break;
case '9':
$sumDispari+=21;
break;
case 'A':
$sumDispari+=1;
break;
case 'B':
$sumDispari+=0;
break;
case 'C':
$sumDispari+=5;
break;
case 'D':
$sumDispari+=7;
break;
case 'E':
$sumDispari+=9;
break;
case 'F':
$sumDispari+=13;
break;
case 'G':
$sumDispari+=15;
break;
case 'H':
$sumDispari+=17;
break;
case 'I':
$sumDispari+=19;
break;
case 'J';
$sumDispari+=21;
break;
case 'K':
$sumDispari+=2;
break;
case 'L':
$sumDispari+=4;
break;
case 'M':
$sumDispari+=18;
break;
case 'N':
$sumDispari+=20;
break;
case 'O':
$sumDispari+=11;
break;
case 'P':
$sumDispari+=3;
break;
case 'Q':
$sumDispari+=6;
break;
case 'R':
$sumDispari+=8;
break;
case 'S':
$sumDispari+=12;
break;
case 'T':
$sumDispari+=14;
break;
case 'U':
$sumDispari+=16;
break;
case 'V':
$sumDispari+=10;
break;
case 'W':
$sumDispari+=22;
break;
case 'X':
$sumDispari+=25;
break;
case 'Y':
$sumDispari+=24;
break;
case 'Z':
$sumDispari+=23;
break;
default:
break;
}
}
//Calcolo codice di controllo
$modControllo = ($sumPari + $sumDispari) % 26;
switch($modControllo){
case 0:
$codControllo = 'A';
break;
case 1:
$codControllo = 'B';
break;
case 2:
$codControllo = 'C';
break;
case 3:
$codControllo = 'D';
break;
case 4:
$codControllo = 'E';
break;
case 5:
$codControllo = 'F';
break;
case 6:
$codControllo = 'G';
break;
case 7:
$codControllo = 'H';
break;
case 8:
$codControllo = 'I';
break;
case 9:
$codControllo = 'J';
break;
case 10:
$codControllo = 'K';
break;
case 11:
$codControllo = 'L';
break;
case 12:
$codControllo = 'M';
break;
case 13:
$codControllo = 'N';
break;
case 14:
$codControllo = 'O';
break;
case 15:
$codControllo = 'P';
break;
case 16:
$codControllo = 'Q';
break;
case 17:
$codControllo = 'R';
break;
case 18:
$codControllo = 'S';
break;
case 19:
$codControllo = 'T';
break;
case 20:
$codControllo = 'U';
break;
case 21:
$codControllo = 'V';
break;
case 22:
$codControllo = 'W';
break;
case 23:
$codControllo = 'X';
break;
case 24:
$codControllo = 'Y';
break;
case 25:
$codControllo = 'Z';
break;
}
$codCalcolato = $codRaw . $codControllo;
?>
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo "Conferma di " . $nome . " " . $cognome ?></title>
</head>
<body>
<?php
echo "<h1> Benvenuto, " . $nome . " "; echo $cognome . "</h1>";
echo "Il tuo codice fiscale è: " . $codFiscale . "<br>" . "Sei nato il " . $dataNascita . " a " . $luogoNascita . " (" . $provincia . ")<br><br>";
echo "Il codice calcolato dai tuoi dati è: " . $codCalcolato . "<br>";
if($codCalcolato == $codFiscale){
echo "I due codici corrispondono";
}
else{
echo "I due codici non corrispondono, controllare di aver inserito le informazioni correttamente";
}
echo "<br><br>Richiesta effettuata " . date("d M Y H:i:s") . " (" . date_default_timezone_get() . ")";
?>
</body>
</html>