๐ Benvenuto nella Lezione 7!
Bentornato Validator! ๐ Hai imparato le basi di if/else. Ora รจ il momento di diventare un MAESTRO dei confronti!
Gli operatori di confronto e le validazioni sono fondamentali per creare form sicuri, login protetti e app affidabili.
In questa lezione creerai un validatore password professionale con barra di sicurezza in tempo reale! ๐
๐ฏ Cosa Imparerai
- โ Padroneggiare tutti gli operatori di confronto
- โ Combinare condizioni con && (AND) e || (OR)
- โ Validare email, username, password
- โ Controllare lunghezza stringhe
- โ Verificare presenza di caratteri speciali
- โ Progetto: Password Validator con strength meter
๐ฎ Perchรฉ Validazione รจ Cruciale?
La validazione protegge la tua app e i tuoi utenti:
- ๐ Sicurezza: Password deboli = account hackerati
- โ๏ธ Email valide: Evita errori di iscrizione
- ๐พ Dati puliti: Impedisci input invalidi nel database
- ๐ UX migliore: Feedback immediato all'utente
- ๐ก๏ธ Prevenzione: Blocca attacchi (SQL injection, XSS)
๐ Demo: Validazioni in Azione
Prova queste validazioni e vedi come funzionano!
๐ง Validazione Email
๐ค Validazione Username
Min 3 caratteri, max 15
๐ข Validazione Etร
Deve essere 18-120
๐ค Come Funzionano?
Ogni validazione usa confronti e operatori logici:
// Email: deve contenere @ e .
if (email.includes('@') && email.includes('.')) { ... }
// Username: lunghezza tra 3 e 15
if (username.length >= 3 && username.length <= 15) { ... }
// Etร : tra 18 e 120
if (etร >= 18 && etร <= 120) { ... }
โ๏ธ Operatori di Confronto Approfonditi
Gli operatori di confronto restituiscono sempre true o false.
Esempi Pratici con Risultati
Confrontare Stringhe
// Confronto esatto (case-sensitive!)
"Mario" === "Mario" // true
"Mario" === "mario" // false (M maiuscola!)
// Confronto ignorando maiuscole
const nome1 = "Mario";
const nome2 = "mario";
nome1.toLowerCase() === nome2.toLowerCase(); // true
// Confronto lunghezza
"ciao".length === 4 // true
"password".length >= 8 // true
โ ๏ธ Attenzione: === vs ==
Usa SEMPRE === (strict equality):
5 == '5' // true (converte tipi) โ EVITA
5 === '5' // false (controlla anche tipo) โ
USA QUESTO
0 == false // true โ
0 === false // false โ
๐ Operatori Logici: AND, OR, NOT
Gli operatori logici combinano piรน condizioni!
1. && (AND) - Entrambe devono essere vere
const etร = 25;
const haPatente = true;
// Entrambe DEVONO essere vere
if (etร >= 18 && haPatente === true) {
console.log('Puoi guidare!');
}
// Password sicura: min 8 caratteri E contiene numero
const password = "sicura123";
if (password.length >= 8 && /\d/.test(password)) {
console.log('Password accettata!');
}
2. || (OR) - Almeno una deve essere vera
const giorno = "sabato";
// Almeno UNA deve essere vera
if (giorno === 'sabato' || giorno === 'domenica') {
console.log('ร weekend! ๐');
}
// Username valido: almeno 3 caratteri O email valida
const input = "user@email.com";
if (input.length >= 3 || input.includes('@')) {
console.log('Input valido');
}
3. ! (NOT) - Inverte il valore
const isLoggedIn = false;
// ! inverte: false diventa true
if (!isLoggedIn) {
console.log('Devi fare login!');
}
// Equivalente a:
if (isLoggedIn === false) {
console.log('Devi fare login!');
}
Tabella Veritร
| A | B | A && B | A || B | !A |
|---|---|---|---|---|
| true | true | true | true | false |
| true | false | false | true | false |
| false | true | false | true | true |
| false | false | false | false | true |
โ Pattern di Validazione Comuni
Ecco i pattern piรน usati nella validazione:
1. Validare Email
function validaEmail(email) {
// Base: deve contenere @ e .
return email.includes('@') && email.includes('.');
}
// Piรน avanzata: @ prima del punto
function validaEmailAvanzata(email) {
const posAt = email.indexOf('@');
const posPunto = email.lastIndexOf('.');
return posAt > 0 && posPunto > posAt + 1;
}
2. Validare Username
function validaUsername(username) {
// Tra 3 e 15 caratteri
return username.length >= 3 && username.length <= 15;
}
// Con controllo caratteri speciali
function validaUsernameAvanzato(username) {
const valido = username.length >= 3 && username.length <= 15;
const noSpazi = !username.includes(' ');
return valido && noSpazi;
}
3. Validare Password
function validaPassword(password) {
// Requisiti base
const lunghezzaOk = password.length >= 8;
const haMaiuscola = /[A-Z]/.test(password);
const haNumero = /[0-9]/.test(password);
// Tutte DEVONO essere vere
return lunghezzaOk && haMaiuscola && haNumero;
}
โ Best Practices Validazione
- Validazione in tempo reale (evento 'input')
- Feedback chiaro e immediato
- Mostra requisiti prima che l'utente inizi
- Usa colori (verde=ok, rosso=errore)
- Valida sia lato client CHE lato server
โ๏ธ Esercizio Guidato: Validatore Form Completo
Crea un validatore che controlla nome, email e etร in tempo reale!
๐ Cosa Devi Fare
- Seleziona i 3 input e i 3 div feedback
- Aggiungi evento 'input' a ciascun campo
- Valida nome: min 3 caratteri, max 30
- Valida email: contiene @ e .
- Valida etร : tra 18 e 120
- Aggiungi/rimuovi classi 'valid' o 'invalid'
- Mostra feedback appropriato
๐ Struttura HTML da Usare
Ecco gli elementi HTML con cui lavorerai:
<!-- Input Nome -->
<input id="formName" type="text" placeholder="Nome">
<div id="nameFeedback"></div>
<!-- Input Email -->
<input id="formEmail" type="email" placeholder="Email">
<div id="emailValidFeedback"></div>
<!-- Input Etร -->
<input id="formAge" type="number" placeholder="Etร ">
<div id="ageValidFeedback"></div>
#formNameโ Input nome#nameFeedbackโ Feedback nome#formEmailโ Input email#emailValidFeedbackโ Feedback email#formAgeโ Input etร#ageValidFeedbackโ Feedback etร
โ Validatore Form
๐ฎ Progetto Finale: Password Validator Professionale
ร il momento del progetto vero! ๐
Creerai un validatore password professionale con:
- โ Barra di sicurezza che si riempie (debole/media/forte)
- โ 5 requisiti da soddisfare visualizzati
- โ Feedback in tempo reale
- โ Statistiche password (lunghezza, caratteri speciali...)
- โ Bottone mostra/nascondi password
๐ฏ Obiettivi del Progetto
- โ Controllo lunghezza minima (8 caratteri)
- โ Controllo maiuscola presente
- โ Controllo minuscola presente
- โ Controllo numero presente
- โ Controllo carattere speciale presente
- โ Calcolo forza password
- โ Visualizzazione requisiti soddisfatti
๐ Riferimento Elementi HTML
Prima di iniziare, ecco tutti gli ID che userai:
<!-- Input Password -->
<input id="passwordInput" type="password">
<!-- Barra forza -->
<div id="strengthBar" class="strength-bar"></div>
<div id="strengthText"></div>
<!-- Requisiti (5 div) -->
<div id="reqLength" class="requirement-item">
<span class="requirement-icon">โญ</span>
<span>Minimo 8 caratteri</span>
</div>
<div id="reqUpper">Maiuscola</div>
<div id="reqLower">Minuscola</div>
<div id="reqNumber">Numero</div>
<div id="reqSpecial">Carattere speciale</div>
#passwordInputโ Input password#strengthBarโ Barra colorata#strengthTextโ Testo "Debole/Media/Forte"#reqLengthโ Requisito lunghezza#reqUpperโ Requisito maiuscola#reqLowerโ Requisito minuscola#reqNumberโ Requisito numero#reqSpecialโ Requisito speciale
๐ Il Validatore Live
๐ Password Validator
Requisiti Password:
๐ป Completa il Codice del Validatore
Il codice base รจ pronto, tu devi completare i controlli!
๐ฏ Conclusione: Sei un Validation Master!
โ Recap: Cosa Hai Imparato
- โ Operatori di confronto (===, !==, >, <, >=, <=)
- โ Operatori logici (&&, ||, !)
- โ Validazione email, username, etร
- โ Pattern validazione comuni
- โ Regex base per password
- โ Password validator professionale completo!
๐ Challenge: Vai Oltre!
Migliora il validatore aggiungendo:
- ๐ Conferma Password: Campo per confermare password
- ๐ Password Meter: Mostra % forza password
- ๐ฒ Generatore: Genera password sicura automatica
- ๐พ Salva: Salva password generate (sicure!)
- ๐ Copia: Bottone per copiare password