Salve ragazzi, ho un form composto da 12 campi il quale si collega ad una pagina.php.

Tra i 12 campi 10 sono obbligatori e 2 non sono obbligatori, quando vado nella pagina.php, inserisco tutti i valori in un'array e successivamente eseguo un foreach del genere:

Codice PHP:
session_start();

$check true;
foreach (
$array as $key => $value)
{
    if(empty(
$value))
        
$check false;
    else
    {
        
$_SESSION[$key] = $value// Nel momento in cui ho es.8 campi corretti e il resto non corretto, dovrò pur salvare i dati inseriti per poi farli modificare, quindi uso le sessioni.
    
}

Ovvero, setto una variabile a true, e appena trovo un campo vuoto la setto a false.
Adesso tutto questo deve accadere solo con i campi obbligatori mentre con 2 campi(email e cellulare) questo non deve accadere, però devo anche tenere presente che non posso continuare se l'email inserita è strutturalmente errata ovvero non segue questo criterio:

nome@dominio.xxx

Come posso fare?

Inoltre approfitto per chiedere se nell'array è consigliato applicare la funzione htmlspecialchars,per filtrare i campi dagli attacchi XXS.

Grazie anticipatamente, Gaten.