2009-09-22 9 views
0

J'essaie de savoir si les utilisateurs ont eu une activité au cours de la dernière heure. Ce qui suit est mon code, mais il retourne toujours oui, peu importe:activité dans l'heure passée

$houraway = (int)mktime() + (60 * 60); 
$now = mktime(); 

while($user = mysql_fetch_array($qusers)) { 
    echo $user['Name']." - "; 
    $datetime = explode(" ", $user['Custom6']); 
    $date = $datetime[0]; 
    $date = explode("-", $date); 
    $time = $datetime[1]; 
    $time = explode(":", $time); 
    $hr = $time[0]; 
    $min = $time[1]; 
    $sec = $time[2]; 
    $y = $date[0]; 
    $m = $date[1]; 
    $d = $date[2]; 
    $lastloginmk = (int)mktime($hr, $min, $sec, $m, $d, $y); 
    echo " - ".$lastloginmk; 
    if($lastloginmk <= $houraway) { echo "yes"; } else { echo "no"; } 
    echo "<br />"; 
} 

dernière fois que l'activité est enregistrée dans la base de données comme ceci:

2009-09-22 13:32:28 

Merci à l'avance!

Ryan

+0

** La ligne 2 n'est pas pertinente. – Ryan

+0

Pourquoi pas "hourago"? – NawaMan

+0

Pourquoi ne pas imprimer '$ lastloginmk' et' $ houraway'? Gardez les variables d'impression jusqu'à ce que vous isoliez où l'erreur est. – Fragsworth

Répondre

1

La ligne

$houraway = (int)mktime() + (60 * 60); 

est à la recherche dans l'avenir d'une heure. Le dernier login sera toujours plus tôt que le futur, car le dernier login doit être passé.

Je pense que vous voulez dernière connexion soit supérieure à un heure avant maintenant. Changez le $houraway et changez votre dernière comparaison, et vous devriez être bon pour aller.

+0

oh comment stupide de moi. merci tas. bon ramasser. – Ryan

1

Je pense que le code que vous voulez est:

$hourago = mktime() - (60 * 60); 

while($user = mysql_fetch_array($qusers)) { 
    echo $user['Name']." - "; 
    $lastloginmk = strtotime($user['Custom6']); 
    echo " - ".$lastloginmk; 
    if($lastloginmk <= $hourago) { echo "yes"; } else { echo "no"; } 
    echo "<br />"; 
} 

Hope this helps.

Questions connexes