• User

    Controllo inserimento username in form registrazione

    Ciao a tutti,

    avrei bisogno di un suggerimento.

    Ho una pagina di registrazione contenente un form in cui, all'inserimento dei dati devo verificare le seguenti condizioni:

    Lo username può contenere solamente caratteri alfabetici o numerici o il simbolo %, deve iniziare con un carattere alfabetico o con %, deve essere lungo tra 3 e 6 caratteri e deve contenere almeno un carattere non numerico ed uno numerico.

    Io ho scritto questo:

    if (!preg_match("^([a-zA-Z%])+([a-zA-Z%0-9]{3,6})$", $nick))

    Le prime tre condizioni mi sembrano verificate e testandole risultano correttamente funzionanti, ma non so come "dirgli" che deve essere presente almeno un carattere non numerico ed uno numerico.

    Mi sapete aiutare?

    Grazie in anticipo.


  • User Attivo

    Ciao,ma vuoi fare tutto nell'espressione regolare?
    Se no per le ultime due potresti analizzare la stringa e fare un semplice count guardando se i caratteri sono numeri o meno


  • User

    Ciao Pietro,
    entrambe le soluzioni possono andare bene (tutto nell'espressione regolare o la soluzione che hai indicato tu).
    Come devo fare per analizzare la stringa e fare un count come mi hai indicato?
    Grazie.


  • User Attivo

    ciao per analizzare la stringa fai così

    
    for($i=0;$i<strlen($stringa);$i++)
    {
        if(is_numeric($stringa{i})
        {
              //fai quello che devi fare se è un numero
         }
         else  //altrimenti....
    
    }
    
    

  • User

    Se non ho inteso male il codice che mi hai scritto verifica se l'intera stringa è numerica o meno.
    Nel mio caso devo verificare che almeno un carattere sia non numerico ed uno numerico.


  • User Attivo

    Il codice di Pietro verifica, carattere per carattere, se almeno uno è un numero.
    Bastano 2 righine di codice in più per fare quello che ti serve... :wink3:
    [PHP]
    for($i=0;$i<strlen($stringa);$i++) {

    if(is_numeric($stringa{$i})){
    $ha1numero=TRUE;
    break;
    } else {
    $ha1numero= FALSE;
    }
    }
    if(!$ha1numero){
    echo "Inserire almeno un numero nella stringa!";
    }else{
    echo "Ottimo! Ha un numero!";
    }
    [/PHP]
    Poi devi modificartelo in base alle tue esigenze.
    Ciao.


  • User

    Grazie mille...funziona.
    Posso chiederti ancora una cosa? Se anzichè fare il controllo su un valore numero volessi fare un controllo per verificare che almeno un carattere sia minuscolo ed uno
    maiuscolo come cambia la funzione?


  • User Attivo

    [PHP]$completa = FALSE;
    for($i = 0;$i < strlen($stringa);$i++){
    // controlla se c'è un numero
    if(is_numeric($stringa{$i})) {
    $completa = TRUE;
    break;
    }else{
    $completa = FALSE;
    }
    }

    // controlla se c'è una maiuscola
    if($completa){
    for($i = 0;$i < strlen($stringa);$i++){

        if(ctype_upper($stringa{$i})){
            $completa = TRUE;
            break;
        }else{
            $completa = FALSE;
        }
    }
    

    }

    // controlla se c'è una minuscola
    if($completa){
    for($i = 0;$i < strlen($stringa);$i++){

        if(ctype_lower($stringa{$i})){
            $completa = TRUE;
            break;
        }else{
            $completa = FALSE;
        }
    }
    

    }

    if(!$completa){
    echo "Inserire almeno un numero, una maiuscola e una minuscola nella stringa!";
    }else{
    echo "Ottimo! Ha un numero una maiuscola e una minuscola!";
    }
    [/PHP]
    Ciao.


  • User

    Ottimo. Grazie mille!!! 😉