Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Controllare campi input form

  1. #1

    Controllare campi input form

    sto realizzando il mio primo sito in php html e CSS.
    Ho alcune difficoltà con il controllo dei campi di input del form: vorrei fare in modo che per nome e cognome vengano inseriti almeno 2 caratteri ciascuno e nessun intero, che la mail contenga la @ e che la psw abbia almeno 5 caratteri. Riesco ad effettuare ognuno dei controlli sopra elencati ma separatamente l'uno dall'altro e se commetto un'errore il mio programma mi genera tutte le risposte di errore: (per ora ho fatto il controllo solamente con nome e cognome)


    <?php
    $nome=$_POST["nome"];
    $cognome=$_POST["Cognome"];

    if(strlen($nome)>2)
    {
    echo"Ciao $nome</br>";
    }
    else {
    echo"errore";
    }




    if(strlen($cognome)>2)


    {
    echo"Ciao".$cognome;
    }


    else {
    echo"hai nserito un cognome fasullo";

    }

    RISPOSTA (ho inserito nome=marco e cognome=p(errore) ) :

    Ciao marco

    hai nserito un cognome fasullo




    Il programma genera il messaggio di errore a causa del cognome sbagliato ma genera anche il messaggio scritto in caso di un nome corretto("ciao marco").
    Vorrei creare un'operazione unica che per un singolo errore in uno dei campi generi una pagina di errore.In modo da generare un singolo messaggio di errore se anche solo uno dei campi input è sbagliato.
    Si puo fare con un ciclo while?
    spero di essere stato chiaro
    sono in crisi, grazie mille!!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    10,604
    Devi prima verificare tutte le condizioni, se una va male fermi tutto e dici cosa è andato storto, se passano tutte scrivi il saluto.
    Considerando solo nome e cognome

    Codice PHP:
    if ( strlen$_POST['nome'] ) < )
    {
        echo 
    "Il nome è troppo corto";
    }
    else if ( 
    strlen$_POST['cognome'] ) < )
    {
        echo 
    "Il cognome è troppo corto";
    }
    else 
    // tutto ok
    {
        echo 
    "Ciao " $_POST['nome'] . " " $_POST['cognome'] . "!";


  3. #3
    grazie mille ha funzionato!!
    tuttavia se riempivo i form con spazi bianchi il programma non mi segnava errore, ho risolto aggiungendo la funzione "trim":

    if ( strlen ( trim($_POST["nome"] ) ) < 2 )
    {


    echo "Il nome è troppo corto";


    }
    else if ( strlen( trim($_POST['Cognome']) ) < 2 )
    {
    echo "Il cognome è troppo corto";
    }
    else
    {
    echo "Ciao " . $_POST['nome'] . " " . $_POST['Cognome'] . "!";
    }

    tuttavia non cancella gli spazi all'interno della form se ho inserito dei caratteri. Ad esempio se inserisco "ma r c o" me lo salva tale e quale con gli spazi.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    10,604
    Sì, trim() li toglie solo all'inizio e alla fine.
    Per togliere gli spazi in mezzo alle strignhe dovresti usare preg_replace(), ma per usarla si devono conoscere almeno un po' le espressioni regolari.

    P.S. quando posti del codice sul forum, mettilo tra i tag [php] e [ /php] (senza spazio tra [ e /, io l'ho messo altrimenti sarebbero stati interpretati e non si vedrebbero).

  5. #5
    Grazie Mille!!

  6. #6
    Ciao, inserendo questi comandi nel form nome non posso essere inseriti simboli e numeri. Tuttavia voglio rendere possibile l'inserimento di apostrofi e lettere accentate(cosa che al momento non funziona)
    grazie in anticipo!


    Codice PHP:

    else if(!preg_match("/^[\w-]+$/"$_POST["nome"] )){   echo "Il tuo nome non può contenere simboli o numeri";} 

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    10,604
    Le espressioni regolari sono un po' ostiche da capire, qui puoi trovare un po' di informazioni basilari sulla sintassi, ma per capirle bene ci vuole impegno e guide più complete. Se non hai problemi con l'inglese puoi trovare buon materiale online.
    Qui puoi testare le tue regole e ti viene anche detto cosa vuol dire la regola che hai fornito, è un ottimo strumento per imparare e migliorare.

    Nel tuo caso una regola potrebbe essere ^[\w']+$

  8. #8
    Ciao, anche io sono alle prime armi quindi ...
    Io uso questa :
    if (!preg_match("/^[a-zA-Z 'àèòùé ]+$/",$coname))
    originariamente era :
    if (!preg_match("/^[a-zA-Z ]+$/",$coname)) che controllava appunto appunto da a/z e A/Z, ho aggiunto le vocali e l'apostrofo
    e (a me ) funziona, noterai che manca la ì, e' intenzionale, ho verificato che mancando nella stringa di controllo la ì viene bloccata.

    Attento pero', questo è solo un controllo di 'formattazione' , in PHP le lettere accentate hanno poi un sacco di 'stranezze'.
    Spero sia utile.
    Ciao

  9. #9
    ok grazie mille proverò!

Tag per questa discussione

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