risposte random...
mysql result fa una chiamata per ogni campo. mysql_fetch_assoc un chiamata al buffer per ogni riga. Nel tuo caso tre chiamate contro una e non prendi gli altri campi.
Le variabili in arrivo da un POST-GET vanno sempre controllate. Non sai che ci puo' mettere lo user.Sia per vedere se sono valorizzate o meno, ma sopratutto lo siano con dei valori attesi.
Se salvi dei dati di sessione devi prima "aprire" una sessione, e i dati li troverai continuando la stessa sessione in altre pagine e sempre nella variabile di sessione $_SESSION. Quindi session_start() all'inizio di ogni pagina.