Joomla.it Forum

Componenti per Joomla! => Gestione Form => : gotiche 05 Feb 2013, 08:38:58

: [RISOLTO] controllo codice fiscale
: 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 += ){
      
$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 += ) {
      
$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?
: Re:controllo codice fiscale
: BelinBelan 05 Feb 2013, 08:48:56
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
: Re:controllo codice fiscale
: gotiche 05 Feb 2013, 10:36:56
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 += ){
      
$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 += ) {
      
$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
"";
  }
}
}
?>

: Re:controllo codice fiscale
: BelinBelan 05 Feb 2013, 10:37:56
Perfetto! ;)

Ricordati di scrivere [RISOLTO] nel titolo di questo thread! ;D
: Re:[RISOLTO] controllo codice fiscale
: theshot 07 Feb 2013, 11:13:46
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  :)
: Re:[RISOLTO] controllo codice fiscale
: claudiovis 04 Jun 2013, 16:30:52
ciao... ottimo script...  hai qualcosa già teastato su chronoforms  per la PIVA?   8)
: Re:[RISOLTO] controllo codice fiscale
: Max Ambrox 26 Jun 2013, 16:06:13
mi aggiungo anche io alla richiesta di Theshot, dove va inserito questo codice?
: Re:[RISOLTO] controllo codice fiscale
: Max Ambrox 26 Jun 2013, 16:17:09
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à?
: Re:[RISOLTO] controllo codice fiscale
: BelinBelan 27 Jun 2013, 16:37:53
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.