- Home
- Categorie
- Coding e Sistemistica
- PHP
- Controllo inserimento username in form registrazione
-
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.
-
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
-
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.
-
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.... }
-
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.
-
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...
[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.
-
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?
-
[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.
-
Ottimo. Grazie mille!!!