Praticamente funziona così... quando ti loggi al forum... sia che tu richieda il mantenimento dei dati di connessione... o meno... lui setta cmq un cookie con il tuo USER ID numerico... questa mia funzioncina lo va a leggere e poi spara una query per ottenere lo USERNAME
codice:
function riconosci_utente()
{
$utente = 'default';
if (isset($_COOKIE["phpbb2mysql_data"]))
{
$stringa = $_COOKIE["phpbb2mysql_data"];
$n = sscanf($stringa, "a:%d:{%s}", $l1, $s1);
$s1 = rtrim($s1,"}");
$s1 = trim($s1);
if ($s1 == '') $utente = 'default';
else
{
list($s1,$s2,$s3,$s4) = explode(";",$s1);
// $s3 dovrebbe contenere "userid" e $s4 l'id vero e proprio
// print "*** ".$s3."*".$s4." ***";
list($s1,$s2,$s3) = explode(":",$s3);
$s3 = trim($s3,"\"");
// controllo che vi sia realmente USERID
if (($s1 != 's') && ($s2 != 6) && ($s1 != 'userid')) $utente = 'error';
else
{
//print $s4.'
';
list($s1,$s2,$s3) = explode(":",$s4);
if ($s1 == 'i') $s3 = $s2;
elseif (($s1 != 's') && (strlen($s3)!= $s2+2)) $utente = 'error';
// if (($s1 != 's') && (strlen($s3)!= $s2+2)) $utente = 'error';
//print $s3.'
';
$s3 = trim($s3,"\"");
//print $s1.$s2.$s3;
if ($utente <> 'error')
{
$res = mysql_query("SELECT username FROM phpbb_users WHERE user_id = $s3");
$row = mysql_fetch_row($res);
$utente = $row[0];
}
}
}
}
return $utente;
}
Nel caso il cookie non sia nel formato giusto si ottiene come nome utente 'error'
Due sono i presupposti perche' tale funzione svolga il suo compito:
1. l'utente deve essersi loggato al forum o aver detto a phpBB di ricordare i suoi dettagli di connessione
2. devi avere una connessione già aperta col db... oppure ti fai restituire lo userid e non lo username
EDIT: mi ero dimenticato... se non trova l'utente... lo setta a 'default'