07

Confronti e Controlli ๐Ÿ”

Padroneggia gli operatori di confronto e crea validazioni avanzate! Costruirai un validatore password professionale con barra di sicurezza.

โฑ๏ธ 45 minuti ๐ŸŽฏ Livello: Intermedio ๐Ÿ” 1 Password Validator

๐Ÿ“š 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

10
>
5
true
3
<
7
true
"ciao"
===
"ciao"
true
5
!==
3
true
10
>=
10
true
8
<=
3
false

Confrontare Stringhe

JavaScript
// 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

JavaScript
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

JavaScript
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

JavaScript
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

JavaScript
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

JavaScript
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

JavaScript
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

  1. Seleziona i 3 input e i 3 div feedback
  2. Aggiungi evento 'input' a ciascun campo
  3. Valida nome: min 3 caratteri, max 30
  4. Valida email: contiene @ e .
  5. Valida etร : tra 18 e 120
  6. Aggiungi/rimuovi classi 'valid' o 'invalid'
  7. Mostra feedback appropriato

๐Ÿ“ Struttura HTML da Usare

Ecco gli elementi HTML con cui lavorerai:

HTML - Elementi del Form
<!-- 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>
๐Ÿ“Œ IDs da Usare nel JavaScript:
  • #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:

HTML - Mappa degli Elementi
<!-- 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>
๐Ÿ“Œ Guida Rapida IDs:
  • #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:

โญ• Minimo 8 caratteri
โญ• Almeno una MAIUSCOLA
โญ• Almeno una minuscola
โญ• Almeno un numero (0-9)
โญ• Carattere speciale (!@#$%)

๐Ÿ’ป 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

๐Ÿ“š Prossima Lezione

Nella Lezione 8 imparerai lo Switch e Menu! Navigazione tra tab, menu interattivi e molto altro! ๐ŸŽฏ