ho un sistema di login così strutturato :

ho tre tabelle nel mio database che mi servono a questo scopo :

utente (nick,pass);
utenti_online(utente,tempo);
sessioni(id_sessione,nick,data);

ed uno script php che ho all'entrata di ogni pagina:
Codice PHP:
require_once('SmartyConf.php');
require_once (
'db_use.php');

session_start();
printf("il tuo username è : %s "$_SESSION['username'] );
if(!isset (
$_SESSION['username'] ) )
{
  if ( isset(
$_COOKIE['id']) )
  { 
   
$id $_COOKIE['id'];
    
//trova la sessione nella tabella sessioni per vedere se il cookie e valdio
    
$trovato findSession($id);
    if (
$trovato)
    {
      
//trova la sessione a cui è associato il nick
      
$nick findNickSessione($id);
      
//imposta il nick di sessione
      
$_SESSION['username'] = $nick;
                
      
startOnline($nick);
      
delOffline();
                
                
      
//crea un nuovo id di sessione
      
srand ((double)microtime()*1000000 );
      
$session_id md5(uniqidrand () ) );
      
session_id($session_id);
      
$new session_id();
      
printf(" nuova sessione : %s     "$new );
      
printf(" vecchia sessione : %s   "$id );
      
//setta il cookie con il nuovo id di sessione
      
setcookie ('id' ,session_id() ,time()+350 );
      
//sostituisce la nuova sessione con la vecchia nella tabella sessioni
      
destroyOldSession($id);
      
newSession($new,$nick);    
      
printf(" Cookie buono, username : %s \n",$_SESSION['username'] );
    }
    else
    {
      
//cancello il cookie
      
setcookie('id',"",-3600);
      
//setto il nick di sessione a ospite
      
$_SESSION['username']="ospite";
      
printf(" Cookie non buono, username : %s \n",$_SESSION['username'] );
    }
  }
  else 
  {
    
$_SESSION['username']="ospite" ;
    
printf(" Non hai cookie, username : %s \n",$_SESSION['username'] );
  }
}
if ( 
$_SESSION['username'] =="ospite" )
{
  require_once(
'logCheck.php');

e logCheck.php è :

Codice PHP:
if (isset($_POST['user']) && isset($_POST['pass'])) 

  
$esito contlog($_POST['user'],$_POST['pass']);
    
  if (
$esito
  {
    
//setta il nick di sessione
    
$_SESSION['username'] = $user;
      
    
//crea un nuovo id di sessione
    
srand ((double)microtime()*1000000 );
    
$session_id md5(uniqidrand () ) );
    
session_id($session_id);
            
    
//inserisce l'utente tra gli online
    
startOnline($user);
            
    
//cancella gli offline
    
delOffline();
            
    
//setto il nuovo cookie
    
setcookie ('id' ,session_id() ,time()+350 );
            
    
//creo una nuova sessione  nella tabella sessione
    
newSession(session_id(),$user );
            
    
printf("hai fatto il login correttamente, nick : %s ",$_SESSION['username']);
             
      
$smarty->assign('ErrLog'"0" );
            
$smarty-> assign('username',$_SESSION['username']);
  }  
  else 
  {
    
$smarty-> assign('username',$_SESSION['username']);
    
$smarty->assign('ErrLog'"1" );
  } 
N.B.
$smarty è un ogetto del template che uso non lo notate..tutte le stampe che faccio sono di controllo...

ora arriviamo al mio problema...ogni volta che cambio o ricarico la pagina mi sparisce la sessione ed $_SESSION['username'] si setta a ospite...chi glie lo dice???


help please