Joomla.it Forum
Componenti per Joomla! => Gestione Form => : gotiche 05 Feb 2013, 08:38:58
-
Ciao a tutti, sto cercando di far controllare il codice fiscale su un campo. Il Field Name, Field ID e Field Class si chiamano tutti cf, ho creato un tasto submit, su events ho messo su On load solo show html, in on submit un Custom Server Side Validation con questo codice
<?php
function controllocf ($cf) {
if (strlen($cf)==0){
$messaggio = "Errore, il campo è vuoto.";
return array ($messaggio);
}
elseif (ereg("^[0-9]{11}$", $cf)) {
$messaggio = "Il codice fiscale inserito è relativo ad una persona
giuridica.";
return array ($messaggio);
}
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}$",
$cf)) {
$messaggio = "Errore, il codice fiscale contiene caratteri non validi o
non è della lunghezza esatta.";
return array ($messaggio);
}
else {
$s=0;
for ($i = 1; $i <= 13; $i += 2 ){
$c = $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 = $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]) {
$messaggio = "Errore, il codice fiscale inserito non è formalmente
corretto in quanto il codice di controllo non corrisponde.";
}
else {
$messaggio = "Ok";
return array ($messaggio);
}
}
}
?>
Poi su On fail ho messo Event loop, quando vado a cliccare sul bottone submit e il campo cf è vuoti va avanti ugualmente.., cosa sbaglio?
-
Ciao,
innanzitutto partire da qui: http://www.joomla.it/articoli-community-16-e-17-tab/5234-guida-1-creare-form-in-joomla-17-con-chronoforms-v4-rc-20.html (http://www.joomla.it/articoli-community-16-e-17-tab/5234-guida-1-creare-form-in-joomla-17-con-chronoforms-v4-rc-20.html)
Poi, forse e dico forse... un Return False ci starebbe meglio, chissà! :D
-
Grazie, sono riuscito. Posto il codice se puo' servire a qualcuno
<?php
{
if (ereg("^[0-9]{11}$", $form->data['cf'])) {
$form->validation_errors['cf'] = "Il codice fiscale inserito è relativo ad una persona giuridica.";
return false;
}
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 false;
}
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')) != $form->data['cf'][15]) {
$form->validation_errors['cf'] = "Errore, il codice fiscale inserito non è formalmente
corretto in quanto il codice di controllo non corrisponde.";
}
else {
echo"";
}
}
}
?>
-
Perfetto! ;)
Ricordati di scrivere [RISOLTO] nel titolo di questo thread! ;D
-
Questo codice mi sarebbe molto utile. Io ho la versione V3.2 di Chronoforms per Joomla 1.5 ma non capisco dove devo inserire il codice.
Ogni tentativo va a vuoto e non esegue nessun controllo. Per favore, qualcuno sa darmi indicazioni?
Grazie :)
-
ciao... ottimo script... hai qualcosa già teastato su chronoforms per la PIVA? 8)
-
mi aggiungo anche io alla richiesta di Theshot, dove va inserito questo codice?
-
Ragazzi il posto dove inserire il codice PHP l'ho trovato, adesso non capisco come mai inserisco i dati corretti e continua a dirmi che il codice fiscale inserito non è corretto, il sito in questione è il seguente..
http://www.misurediverse.it/index.php?option=com_chronoforms&view=form&Itemid=113 (http://www.misurediverse.it/index.php?option=com_chronoforms&view=form&Itemid=113)
Se provate a compilare il form con i dati esatti, dice che il codice fiscale è sbagliato....cos'è che non và?
-
ciao Max,
il codic postato non è valido formalmente per chronoforms in quando non restituisce un valore TRUE o FALSE in grado di essere intercettato da chronoforms stesso.
le ultime righe del codice cambiale così:
if( chr($s%26+ord('A'))!=$cf[15] )
return false;
return true;
In questo modo funziona alla grande. ;D
Poi non ti accodare a post chiusi e risolti da trempo, ormai lo sai, apri un tuo topic e esponi la richiesta.