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(uniqid( rand () ) );
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(uniqid( rand () ) );
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