Non vorrei tediarvi postando un' infinità di codice, provo a riassumerlo sperando di non tralasciare proprio quello che provoca il problema.

Innanzitutto siamo in un' area riservata e quindi in cima alla pagina c'è il codice che fa partire la sessione
Codice PHP:
<?php
session_start
();
//se non c'è la sessione registrata
if (!session_is_registered('autorizzato')) {
  echo 
"<h1>Area riservata, accesso negato.</h1>";
  echo 
"Per effettuare il login clicca [url='login.php']<font color='blue'>qui</font>[/url]";
  die;
}
 
//Altrimenti Prelevo il codice identificatico dell'utente loggato
session_start();
$cod $_SESSION['cod']; //id cod recuperato nel file di verifica
?>
<?php
header
('Content-type: text/html; charset=utf-8');
?>
Poi inizia la pagina HTML con del codice javascript nella HEAD e poi il corpo della pagina con:

Codice PHP:
if($_POST) {
    
inserisci_record();
}
else {
    
mostra_form();

quindi la funzione mostra form fa vedere il form ma inizia con queste righe che dovrebbero permettere di visualizzare il messaggio passato via GET:

Codice PHP:
// mostro un eventuale messaggio
    
if(isset($_GET['msg']))
        echo 
'[b]'.htmlentities($_GET['msg']).'[/b]

'

e la funzione inserisci record che posto tutta e che fino all' header(Location : funziona egregiamente

Codice PHP:
function inserisci_record()
{
    
// richiamo il file di configurazione
    
require 'config.php';

    
// richiamo lo script responsabile della connessione a MySQL
    
require 'connessione_db.php';
    
// scelgo il database dopo la connessione
    
mysql_select_db("$dbnome") or die(mysql_error());

    
// recupero i campi di tipo "stringa"
    
$regione trim($_POST['region']);
    
$provincia trim($_POST['province']);
    
$comune trim($_POST['city']);
    
$istituto trim($_POST['istituto']);
    
$indirizzo trim($_POST['indirizzo']);
    
$email trim($_POST['email']);
    
$referente trim($_POST['referente']);

    
// verifico se devo eliminare gli slash inseriti automaticamente da PHP
    
if(get_magic_quotes_gpc())
    {
        
$regione stripslashes($regione);
        
$provincia stripslashes($provincia);
        
$comune stripslashes($comune);
        
$istituto stripslashes($istituto);
        
$indirizzo stripslashes($indirizzo);
        
$email stripslashes($email);
        
$referente stripslashes($referente);
        
    }

    
$regione mysql_real_escape_string($regione);
    
$provincia mysql_real_escape_string($provincia);
    
$comune mysql_real_escape_string($comune);
    
$istituto mysql_real_escape_string($istituto);
    
$indirizzo mysql_real_escape_string($indirizzo);
    
$email mysql_real_escape_string($email);
    
$referente mysql_real_escape_string($referente);

    
// recupero gli altri campi del form
    
$tipo intval($_POST['tipo']);
    
$studenti   intval($_POST['studenti']);
    
$pacchetto intval($_POST['pacchetto']);
    
$stampa intval($_POST['stampa']);
    
$telefono $_POST['telefono'];
    
    
// genero la chiave scuola univoca
    
mt_srand((double)microtime() * 1000000);
    
$geo $regione.'-'.$provincia.'-'.$comune;
    
$t $tipo;
    
$nomesc substr($istituto, -53);
    
$nomesc strtoupper($nomesc);
    
$nomesc str_replace(" """$nomesc);
    
$number mt_rand(111111999999);
    
$codesc $geo.'-'.$t.'-'.$number.'-'.$nomesc;

    
// verifico la presenza dei campi obbligatori
    
if((!$regione)||(!$provincia)||(!$comune)||(!$istituto)||(!$indirizzo)||(!$email))
    {
        
$messaggio urlencode("Non hai completato tutti i campi");
        
header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
        exit;
    }

    
// preparo la query
    
$query "INSERT INTO scuole (ID,regione,provincia,comune,istituto,tipo,indirizzo,telefono,email,referente,studenti,data,pacchetto,stampa,chiave_scuola,pdf_url,invio) VALUES ('','$regione','$provincia','$comune','$istituto','$tipo','$indirizzo','$telefono','$email','$referente','$studenti',NOW(),'$pacchetto','$stampa','$codesc','','0')";

    
// invio la query
    
$result mysql_query($query);

    
// controllo l'esito
    
if (!$result) {
        die(
"Errore nella query $query: " mysql_error());
    }

    
// recupero l'id autoincrement generato da MySQL per il nuovorecord inserito
    
$id_inserito mysql_insert_id();

    
// chiudo la connessione a MySQL
    
mysql_close();

    
$messaggio urlencode("Inserimento effettuato con successo (Istituto $istituto)");
    
$url "http://www.miosito.it/directory/directory/directory/".$_SERVER['PHP_SELF']."?msg=$messaggio";
    
header("Location: " .$url);
    } 
dimenticavo: il form ha la seguente action
codice:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
quindi il form rimanda alla pagina che lo contiene e siccome esiste l'array $_POST viene eseguita la funzione inserisci_record() che arrivata a chiudere la connessione con il database dovrebbe visualizzare un messaggio di conferma...
Lo so che è domenica d'agosto, ma lunedì devo consegnare questo coso che in locale mi funziona benissimo... E' una questione di register_globalff che invece in locale sono on?
grazie a tutti