Visualizzazione risultati 1 fino 9 di 9

Discussione: Funzione per verificare dati passati via GET o POST sia solo numero o lettere.

  1. #1
    Guest

    Predefinito Funzione per verificare dati passati via GET o POST sia solo numero o lettere.

    Mi trovo davanti a questo problema, forse banale Ma vorrei sapere se esiste qualche funzione per controllare che dei dati in una variabile siano SOLO lettere o numeri?

    Ho trovato la funzione is_numeric() ma non fa a caso mio perchè mi restituisce errore.

    Non trovo altre funzioni che facciano a caso mio

  2. #2
    Guest

    Predefinito

    Codice PHP:
    //USO DI IS_NUMERIC
    if(is_numeric($_GET['var'])){
    echo
    "Numero!";
    }else{
    echo
    "Parola o altro!";
    }

    if(
    preg_matc("/^[a-zA-Z]{}$/",$_GET['var2'])){ // CONTROLLO PAROLA, SOLO LETTERE
    echo "Parola!";
    }else{
    echo
    "Altro!";
    }
    Prova così, la prima va, il secondo non so...

  3. #3
    Guest

    Predefinito

    Mi interessa soprattutto per i numeri, dato che devo gestire ID.

    Allora, ho provato:

    Codice PHP:
    if($_GET['id'])
    {
    if (empty(
    $_GET['id']) && (!is_numeric($_GET['id'])))
    {
    #messaggio di errore con die()
    }
    elseif (
    condizione 2)
    {
    #redircet con header()
    }
    elseif (
    condizione 3)
    {
    #messaggio di errore con die()
    }
    else
    {
    #query sql
    }
    }
    else
    {
    #codice
    }
    Eseguo le query in base all'ID ma non mi funziona, esegue lo stesso la query nonostante il primo if sia true.

    Dovrei fare il controllo prima giusto? Mi sembra una domanda molto banale, ma sono tantissime linee di codice, non mi va di modificare tutto per poi magari avere un risultato negativo

  4. #4
    Guest

    Predefinito

    Nel caso di "valore numerico" potresti fare una conversione esplicita; se non ricordo male, la sintassi è qualcosa del genere:
    Codice PHP:
    $numero=(int)$_GET['var']
    Ciao

  5. #5
    Guest

    Predefinito

    [...] Come non detto [...]

    Giuseppe, non ho capito bene cosa intendi!

  6. #6
    Guest

    Predefinito

    Il type juggling permette di convertire dei dati in ciò che si vuole: interi, stringhe, decimali, etc.

    Metti caso che la variabile $a debba contenere solo numeri:

    $a=(int)$a;

    Quel (int) converte il contenuto di $a in numero intero.
    Se leggi la guida di riferimento ci sono altri esempi.


    Ciao!

  7. #7
    Guest

    Predefinito

    Ho letto int() e Type Juggling, ma non ci ho capito veramente nulla

    Cioè, con tutto il popò di funzioni che esistono, non ne esiste una tipo is_numeric() che controlla che siano solo numeri??

    Me la sono creata io quindi

    Ho usato questo che funziona e blocca la query nel caso non sia un numero:
    Codice PHP:
    if(!preg_match('/^[0-9]$/',$_GET['edit']))
    {
    print
    'Il valore non è un numero';
    }
    else
    {
    #Query SQL
    }

  8. #8
    Guest

    Predefinito

    is_int()


    Ciao!

  9. #9
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    is_numeric() è corretto.
    Nel ciclo scritto precedentemente dovevi scrivere
    if (empty($_GET['id']) || (!is_numeric($_GET['id'])))
    {
    #messaggio di errore con die()
    }

    Se la variabile è vuota OPPURE non è numerica esco!

    is_int non è corretto perchè controlla che la variabile passata sia un integero,
    is_numeric restituisce true se la variabile è un intero o una stringa numerica(come nel tuo caso).
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •