Infatti, ho fatto così e praticamente è come se la variabile non venisse proprio passata!
Ora ti posto i sorgenti per farti capire

il sorgente della pagina di default sta in cima alla pagina

questo è il sorgente della pagina edit.php

codice:
// Inserisco il testo nel DB
if (isset($ctrl) && $ctrl == 'ok')
  {
     include ('catalogo/functions/function_edit.inc.php');
     $values = "`nome` = '$nome',`web` = '$web',`descrizione` = '$descrizione'";
     if (edit($_GET['id'],$values,'catalogo_marche'))
       {
	  $message = 'Marca modificata correttamente';
          unset($ctrl);
	  $ctrl = 'ok';
          if (isset($nome))
            {
       	       unset($nome);
	    }
	  if (isset($web))
	    {
	       unset($web);
	    }
	  if (isset($descrizione))
	    {
	       unset($descrizione);
	    }
       }
     else
       {
	  $message = 'Non è stato possibile modificare la marca';
       }
  }
Con la variabile $message faccio si che lo script invii un messaggio alla pagina default.php per informare l'utente sull'esito dell'operazione e questa variabile viene passata!
Ma come vedi definisco anche la variabile $ctrl che mi serve per l'if dello switch ma l'if è come se non ne tenesse conto! E' come se isset($ctrl) restituisse sempre falso!