Questo script funziona in maniera così anomala solo nel tuo PC di sviluppo o in remoto?
L'unica spiegazione che mi viene in mente è che ci sia qualche impostazione "strana" nel php.ini.... oppure che nel file che includi (quello con i parametri di connessione) ci sia un utilizzo delle sessioni da qualche parte.

Altro consiglio.
Sposta la cartella dove vengono salvate le sessioni da quella di default di Apache.
Puoi fare così:
Codice PHP:
ini_set("session.save_path","percorso/cartella/sessioni");
session_start(); 
Puoi in questo modo controllare dove vengono salvati dal server i file di sessione, e controllarne quindi il contenuto.
Potrei sbagliare ma sono convinto che - se stai facendo prove in locale - il tuo server Apache interno non inizializzi una nuova sessione ad ogni login, ma sovrascriva quella esistente, cioè quella con lo stesso sessionID.
Se poi, nei tuoi script non prevedi la cancellazione della sessione, vi rimangono salvati i dati precedenti.... visto che è un file di testo, alla fine!

Non ho capito cosa intendi con:
se io cambio CIAO in, ad esempio, CIA, il valore non dovrebbe cambiare. e invece cambia.
Cosa intendi?
Se lo cambi, è ovvio che deve essere diverso dopo, no?