Proviamo a ripartire da questo codice.
Dove hai questo script $conn è sempre inizializzata ed è corretta? Verifica che lo sia in tutte le condizioni in cui arrivi su quello script, altrimenti $form è NULL e empty(NULL) è sempre true.
La variabile $method non so dove e come la inizializzi, ma verifica che anche questa sia sempre corretta.
Tu fai il submit del form, lo fai col classico pulsante submit, poi method ed action nel tag <form> oppure tramite AJAX?
Nel campo "form" scrivi registro, allo script arriva la richiesta e quindi
$form = "registro"
empty($form) è falso, l'unset non è eseguito
entri nel secondo if, empty($_SESSION['finish']) è true ed entri nel terzo if.
esegui la query (che qui come handle usa $connessione, mentre all'inizio si chiamava $conn, spero sia stata una svista scrivendo qui, altrimenti correggi)
imposti $_SESSION['finish']
ora restringi la finsetra del browser, si ricarica la pagina e viene reinviato il form.
Non ti chiede "sei sicuro di voler reinviare i dati?" ?
Quando viene reinviato, il campo "form" risulta compilato oppure no? Verificalo.
Se risulta compilato, empty($form) è false e quindi si passa avanti, ma se non risulta compilato, empty($form) è true e ci entri eseguendo l'unset.
E soprattutto, in tutto ciò, session_start() all'inizio dello script c'è? Altrimenti la sessione sarà sempre NULL, qualsiasi cosa tu faccia $_SESSION['finish'] sarà sempre NULL, di conseguenza empty($_SESSION['finish']) sarà sempre true, perché in realtà in sessione non ci scrivi mai.

Rispondi quotando