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

    Form Email: problemi validazione lunghezza dati numerici

    Salve di un campo di tipo numerico "telefono" intercettato dalla compilazione di un form ho la necessità di verificare che
    - un numero (e qui è Ok con "is_numeric")
    - non sia inferiore ad almeno 9 caratteri

    Con "strlen" generalmente viene verificata la lunghezza di una stringa, invece ho riscontrato che non è possibile fare lo stesso con un numero perchè con il codice sotto riportato

    codice:
    $lungh_telefono=strlen($telefono);
    ...
    else if(!is_numeric($telefono || $lungh_telefono <= 9)) 
    { echo "\"$telefono\" 
    non è un numero di telefono valido";
    il sistema non mi permette di procedere all'invio dei dati quando in fase di compilazione nel form del dato "telefono" inserisco un valore numerico che supera i 9 caratteri (quando invece dovrebbe consentirlo.. con le stringhe la stessa espressione funziona).

    Come posso fare ?
    Forse dovrei convertire il dato numerico in una stringa oppure esiste un equilvalente strlen per i valori numerici ?

    Grazie in anticipo

  2. #2
    Non è la soluzione migliore, ma se ne vuoi una veloce, ti conviene semplicemente verificare che il numero sia maggiore di 99999999...
    Michele
    King Of The Kill

  3. #3
    Grazie per il riscontro.. ma mi sfugge qualcosa.. perchè dovrei controllare che il numero sia maggiore di 99999999... ? E come potrei comunque fare ?
    Un numero telefonico generalmente si compone di un prefisso di minimo 2 cifre e il resto di 7

  4. #4
    Seppur sia un numero, io prenderei il numero di telefono come una stringa, per i seguenti motivi:
    a) Ci potrebbe anche essere il carattere +
    b) Non so quanto siano ampi gli interi in php ma in certi casi potrebbero non bastare a rappresentare il tuo numero
    c) se salvi 0165123456 ti ritrovi 165123456

    Ciao, bio.

  5. #5
    Dovrebbe funzionare, prova a fare un echo del dato ricevuto
    Ciao!

  6. #6
    Grazie bionicoz e fmortara dei vs riscontri
    io prenderei il numero di telefono come una stringa
    Ok.. ma come si fa ?

  7. #7
    Se non erro, tutti i dati passati da un form arrivano già sotto forma di stringa.
    Quello che farei io è eliminare tutti i caratteri che non siano numeri, e dopo controllerei la lunghezza della stringa rimanente
    Codice PHP:
    $tel preg_replace("/\D/","",$_POST['tel']);  /*toglie tutti i caratteri che non siano numeri*/
    ...
    else if(
    strlen($tel)<10
     echo 
    "[b]\"$tel\"[/b] non è un numero di telefono valido"
    Per essere più sicuri però subito dopo proverei a telefonare :P ciao!

  8. #8
    Grazie ma non funziona.. perchè inserito in ingresso sul modulo 12345678910
    L'elaborazione delle script mi restituisce

    codice:
    "" non è un numero di telefono valido
    Quello che volevo sapere è perchè inserito come valore telefono: 12345678910

    con
    codice:
    $lungh_telefono=strlen($telefono); ... 
    else if(!is_numeric($telefono || $lungh_telefono <= 9))  
    { echo "\"$telefono\"  
    non è un numero di telefono valido";
    mi dice che

    codice:
    "12345678910" non è un numero di telefono valido
    quando avrebbe dovuto farlo con 123456789 o con 12345678, o con 1234567, ecc


  9. #9
    Ho provato anche a settare il valore numerico in tipo stringa in questo modo
    codice:
    settype($telefono, "string"); 
    $lungh_telefono=strlen($telefono);
    ma

    codice:
     $lungh_telefono <= 9
    nonostante riceve in ingresso "12345678910" continua a dirmi

    codice:
    "" non è un numero di telefono valido
    ecco il codice completo

    codice:
    ...
    else if(!is_numeric($telefono)) {
    echo "\"$telefono\" non è un 
    numero di telefono valido"; 
    settype($telefono, "string"); 
    $lungh_telefono=strlen($telefono); 
    } 
    else if($lungh_telefono <= 9) {
    echo "\"$telefono\" non ....."; 
    }
    ...
    "non è un numero di telefono valido" al secondo controllo
    l'ho scritto in modo diverso
    "non ..... "
    per capire se almeno il 1° controllo lo fa correttamente e sembra che lo faccia perchè mi restituisce
    codice:
    "" non ..o

  10. #10
    La mia prima soluzione (quella di confrontare il numero con 99999999) era perché se tu gli passi un numero di telefono con almeno nove cifre "effettive", intendo senza zeri davanti, questo numero sarà sicuramente più alto di 99999999, che ha solo 8 cifre.

    Avevo specificato che era una soluzione poco seria, comunque...

    Io farei così:

    Codice PHP:
    <?php
    $telefono 
    = (string) $_POST['telefono'];

    $telefono preg_replace('/[^0-9]/'''$telefono);
    if (
    strlen($telefono)<9) {
        echo 
    "Numero di telefono non valido.";
    }

    // Altro codice...
    ?>
    Michele
    King Of The Kill

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 © 2024 vBulletin Solutions, Inc. All rights reserved.