Intendevo dire che questa roba qui
$control=mysql_fetch_array($control1);
$_SESSION['nome'] = $control['nome'];
$user=$_SESSION['nome'];
non dovrebbe, ma potrebbe dare risultati diversi in php4 e php5 perché mysql_fetch_array restituisce, in teoria per default, un array "normale" (con indici numerici) e uno associativo, ma se ti serve _solo_ l'array associativo, allora tanto vale usare mysql_fetch_assoc che di fatto equivale a fare una chiamata di tipo mysql_fetch_array($nome_risorsa, MYSQL_ASSOC) che è certamente di più chiara lettura
poi magari il problema non è quello, ma una stampa della variabile $user prima di fare insert e update, giusto per controllare il valore che ha, io lo farei
Se posso permettermi un altro consiglio per migliorare la leggibilità del codice, quando trasferisci il controllo a un altro script, di fatto quello corrente deve essere terminato per cui invece di
if($pgnum!='1'){ //controllo se il pg esiste
header("Location: php_errori/utente_inesistente.php");
}else{
...
}
secondo me ti conviene scrivere
if($pgnum!='1'){ //controllo se il pg esiste
header("Location: php_errori/utente_inesistente.php");
exit();
}
....
il risultato è lo stesso, ma eviti i super else di dimensioni spropositate