Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Controllo partita iva, email e data..

    Salve a tutti,
    Io ho un modulo in un sito per i contatti del cliente. In questo modulo ho inserito una funzione che ho chiamato ControllaModulo() che verifica che i campi non siano vuoti mandando un alert.
    Se possibile vorrei sapere se ci sono funzioni da integrare per il controllo della carta di credito, dell'email e della data.
    Grazie.
    a presto!

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Per la partita iva, c'e` stato un intervento (risolutivo) qualche giorno fa.
    Per le date e per l'e-mail ci sono stati vari interventi.
    Per la carta di credito non ho mai visto nulla (e non saprei che algoritmo si puo` usare).

    Ti consiglio una ricerca nel forum - bottone in alto a dx - (chiarmente trovi la soluzione di un problema alla volta).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Il controllo della carta di credito esiste ed io lo ho applicato in asp. La funzione effettua un controllo di tipo luhn. Tutte le più importanti carte di credito quale VISA, MasterCard, American Express, contengono un numero di controllo che consente di verificare se il numero di carta di credito è valido. Ovviamente non è possibile utilizzare una verifica Luhn per stabilire se il cliente ha un credito residuo sul conto associato alla sua carta di credito o se il cliente è effettivamente il titolare; tuttavia l'utilizzo del test Luhn è un sistema efficace che consente di scartare i numeri di carta di credito non validi.
    In ASP ho utilizzato qusta funzione:

    FUNCTION validCCNumber( ccnumero )
    ccnumero = cleanCCNum( ccnumero )
    IF ccnumero = "" THEN
    validCCNumber = FALSE
    ELSE
    isEven = False
    digits = ""
    For i = Len(ccnumero ) To 1 Step -1
    If isEven Then
    digits = digits & CINT( MID( ccnumero, i, 1)) * 2
    Else
    digits = digits & CINT( MID( ccnumero, i, 1))
    End If
    isEven = (Not isEven)
    Next
    checkSum = 0
    For i = 1 To Len( digits ) Step 1
    checkSum = checkSum + CINT( MID( digits, i, 1))
    Next
    validCCNumber = (( checkSum Mod 10) = 0 )
    END IF
    END FUNCTION

    Questa funzione consente di controllare se il numero è valido tramite il seguente calcolo:
    si moltiplicano per 2 tutte le cifre, a partire dall'ultima e si sommano tra loro i risultati di tali moltiplicazioni. Se il risultato è un multiplo di 10, il numero della carta di credito supera il test.

    Questa funzione richiama anche un'altra funzione chiamata cleanCCNum() che elimina qualsiasi carattere non numerico, infatti spesso gli utenti inseriscono anche i trattini e gli spazi. La funzione è questa:

    FUNCTION cleanCCNum( ccnumero )
    FOR i = 1 TO LEN( ccnumero )
    IF isNumeric( MID( ccnumero, i, 1 )) THEN
    cleanCCNum = cleanCCNum & MID( ccnumero, i, 1 )
    END IF
    NEXT
    END FUNCTION

    Ho trovato queste funzioni in vbsript e funzionano benissimo, ora avrei bisogno di applicarle anche in javascript, qualcuno può aiutarmi?

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    ecco qui...
    Se ben ricordo si moltiplicano le cifre _pari_ per due, si sommano queste alle cifre dispari e se la somma è divisibile per 10 allora il numero è valido (tipo 4111-1111-1111-1111);

    codice:
    <script type="text/javascript">
    function cleanCC(num) {
      var validnum = "";
      for (i=0; i<num.length; i++) {
         if (!(isNaN(num[i]))) {
            validnum += num[i].toString();
         }
      }
      return validnum;
    }
    
    function validCC(cc) {
       num = cleanCC(cc);
       if (num.length != 16) return false; // CC di 16 cifre??
    
       var control = 0;
       for (i=0; i<num.length; i++) {
          digit = parseInt(num[i], 10);
          control += ((i % 2) == 0) ? digit*2 : digit;
       }
    
       return ((control % 10) == 0);
    
    }
    
    //****//
    
    if (validCC('4111-1111-1111-1111')) {
      alert("Valido");
    } 
    else {
      alert("Non Valido");
    }
    </script>
    Ciao
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Ma dove è il riferimento al name="" del campo carta di credito del modulo?

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da simone75
    Ma dove è il riferimento al name="" del campo carta di credito del modulo?
    Io ho semplicemente riscritto in javascript le funzioni del tuo penultimo post

    tu avevi scritto
    Originariamente inviato da simone75
    ora avrei bisogno di applicarle anche in javascript, qualcuno può aiutarmi?
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    ok, scusa e grazie mille!!

  8. #8
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    aspetta... già che ci sei..per curiosità mia

    com'è l'algoritmo esatto ??
    Le cifre partono da 1 a 16 o da 0 a 15 ?
    e si raddoppiano quelle con indice pari o dispari??
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  9. #9
    le cifre comprendono anche gli 0 e si moltiplicano TUTTE le cifre per 2 partando dall'ultima e TUTTI i risultati si sommano tra di loro. Per superare il test Luhn il numero risultante deve essere un multiplo di 10.

  10. #10
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    no intendevo le cifre con _indice_ 0

    Sei sicuro che si moltiplicano tutte per due??
    Nel tuo codice c'è questo

    codice:
    If isEven Then
    digits = digits & CINT( MID( ccnumero, i, 1)) * 2
    Else
    digits = digits & CINT( MID( ccnumero, i, 1))
    End If
    che mi fa pensare che tutte le cifre pari le moltipliche per 2 le altre invece no

    Io semplicemente ti chiedevo se il tuo numero fosse
    1234-5678-9012-3456

    quali cifre moltiplichi per due? 1357913 e 5
    oppure 2468024 e 6??
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.