Aggiornare dati accesso tramite cookie

  • Creatore Discussione Creatore Discussione Jonathan
  • Data di inizio Data di inizio

Jonathan

Nuovo Utente
15 Set 2006
25
0
0
Salve ragazzi, :)
ho finito da un bel po' l'accesso degli utenti al sito che sto facendo, ma succede una cosa strana... ora vi incollo una porzione di codice:

function refresh_user()
{
if(isset($_COOKIE['sav_user']))
{
$nick = $_COOKIE['sav_user'];
}

else
{
if(!(isset($_COOKIE['sav_user'])) && ($_SESSION['authuser'] == 1))
{
$nick = $_SESSION['nickname'];
}
}

/* Aggiorniamo il numero di accessi dell utente */

$update="UPDATE user SET user_accessi=user_accessi+1 WHERE user_nickname='$nick'";

$start = mysql_query($update)
or die(mysql_error());

$query = "SELECT user_accessi FROM user WHERE user_nickname='$nick'";

$go = mysql_query($query)
or die(mysql_error());

$row = mysql_fetch_array($go);


Come potete vedere qui aggiorno il numero di accessi che ha effettuato l'utente che effettua l'accesso, quindi incremento un numero (user_accessi), se non utilizzo il cookie ma solo una sessione temporanea gli accessi si incrementano, ma se utilizzo il cookie per accedere gli accessi non si incrementano. Il codice mi sembra giusto anche perchè l'if che uso all'inizio della funzione lo utilizzo anche altrove e funziona, non capisco...

Ciao! :ilpirata:
 
Vedo nel codice:
PHP:
else
{
if(!(isset($_COOKIE['sav_user'])) && ($_SESSION['authuser'] == 1))
{
$nick = $_SESSION['nickname'];
}
}

ma $_SESSION['nickname'] non è detto che sia settato, sicuramente settato è invece $_SESSION['authuser']
 
No è settato in quanto l'utente ha effettuato l'accesso, il codice per effettuare l'accesso e che richiama la funzione che ho indicato sopra è questo:

function login()
{
global $num_res;

global $utente;

testnick();

if($num_res != 0)
{

if(isset($_POST['nickname']) && isset($_POST['password']))
{
$pwdcrypt = md5($_POST['password']);

$query = "SELECT user_nickname, user_password FROM user WHERE user_nickname='".mysql_real_escape_string ($_POST['nickname'])."' and user_password='".mysql_real_escape_string ($pwdcrypt)."' ";

$result = mysql_query($query)
or die(mysql_error());

if(mysql_num_rows($result) == 1)
{
if(isset($_POST['ricorda']))
{
$utente = $_POST['nickname'];

setcookie("sav_user", $utente, time()+60*60*24*7);
session_start();
$_SESSION['authuser'] = 1;
refresh_user();
}
else
{
session_start();

$_SESSION['nickname'] = $_POST['nickname'];
$_SESSION['password'] = $_POST['password'];
$_SESSION['authuser'] = 1;
refresh_user();
}
}

else
{
$_SESSION['authuser'] = 0;
}

$access = $_SESSION['authuser'];

return ($access);
}
}
}



Ovviamente viene richiamato dal classico form di nome utente e password e checkbox per ricordare i dati di accesso e che quindi setta il cookie nel caso l'utente lo seleziona.

:)
 

Discussioni simili