Al posti di

codice:
session_start();
metterei

codice:
if (!isset($_SESSION))
     @session_start();
questo perchè a seconda di come è configurato apache potrebbe avviarla lui la sessione ad ogni caricamento di pagina, e se è già avviata è inutile chiamare quella funzione.

poi toglierei l'istruzione:

codice:
session_regenerate_id(TRUE);
direi che è questa che causa il problema!!