Ci sono alcune imprecisioni $email non è mai (forse con register_globals deprecato da php 5.3) definito.
Devi chiamare session_start prima di ogni output, se la sessione http esiste verrà recuperata altrimenti creata (default un file di sessione). Inoltre $_SESSION da php 7.1 può essere inizializzata solo se la sessione è attiva (cioè
$_SESSION['status'] = 'inizializzazione';
) se esiste
Esempio pagina creazione sessione ma non recupero:
session_start();
$st_err = ''; //stato globale di una variabile, presente solo la prima volta
$bool = true;
if($bool) {
$_SESSION['status'] = 'inizializzazione'; //Esempio solo se valida, per tale motivo ho impostato $bool su vero.
//Altrimenti avrei creato l'errore su $st_err
}
//Verifica se valida
if(isset($_SESSION['status'])) {
//Sono valido, altro no.
if(!$st_err) {
$a = 2 + 2; // fa sempre 4
} else {
$_SESSION['status'] = null;
unset($_SESSION['status']);
}
} else {
//altro no, questo comportamento dovrebbe essere implicito
$st_err = 'errore1';
}
if(!$st_err) {
//codice valido
$a = 2 + 2;
}
//termine script con o senza ulteriori
//file inclusi
unset($st_err);
//fine non esiste altro codice
non occorre specificare diverso da valido, è una pratica ridondante.
poi al termine dello script l'informazione verrà salvata nel file di sessione.
https://www.php.net/manual/en/function.session-write-close.php
Più che mostrarti il codice basati su cosa ho scritto sopra.