$date = time() - 300;
mysql_query("DELETE FROM online WHERE date < $date") or die(mysql_error());
mysql_query("DELETE FROM online WHERE ip = '$HTTP_SERVER_VARS[HTTP_X_FORWARDED_FOR]'") or die(mysql_error());
$date = time();
mysql_query("INSERT INTO online VALUES( '$HTTP_SERVER_VARS[HTTP_X_FORWARDED_FOR]', '$date' )") or die(mysql_error());
$query = mysql_query("SELECT * FROM online") or die(mysql_error());
$count = mysql_num_rows($query) or die(mysql_error());
echo "Antalet snubbar online: ". $count ."! Din IP är: ". $HTTP_SERVER_VARS[HTTP_X_FORWARDED_FOR];
Får inget felmeddelande eller så, det enda som blir fel är att de rader med IP-nummer som är samma som hos den som uppdaterar sidan (går in på den) inte tas bort.
Någon som har en idé? Här är en länk till en phpinfo()-fil:
Visserligen har jag aldrig sett, än mindre använt, den variabel du använder för IP. Själv brukar jag använda REMOTE_ADDR, men om det fungerar som du har skrivit så gör vi ett försök.
date = time() - 300;
mysql_query("DELETE FROM online WHERE date < $date") or die(mysql_error());
mysql_query("DELETE FROM online WHERE ip = '".$HTTP_SERVER_VARS[HTTP_X_FORWARDED_FOR]."'") or die(mysql_error());
$date = time();
mysql_query("INSERT INTO online VALUES( '".$HTTP_SERVER_VARS[HTTP_X_FORWARDED_FOR]."', '$date' )") or die(mysql_error());
$query = mysql_query("SELECT * FROM online") or die(mysql_error());
$count = mysql_num_rows($query) or die(mysql_error());
echo "Antalet snubbar online: ". $count ."! Din IP är: ". $HTTP_SERVER_VARS[HTTP_X_FORWARDED_FOR];
$date = time() - 180;
@mysql_query("DELETE FROM online WHERE date < $date") or die(mysql_error());
@mysql_query("DELETE FROM online WHERE ip = '". $HTTP_SERVER_VARS[HTTP_X_FORWARDED_FOR] ."'") or die(mysql_error());
$date = time();
@mysql_query("INSERT INTO online VALUES( '". $HTTP_SERVER_VARS[HTTP_X_FORWARDED_FOR] ."', '$date' )") or die(mysql_error());
$query = mysql_query("SELECT * FROM online") or die(mysql_error());
$count = mysql_num_rows($query) or die(mysql_error());
Anledningen till att jag använder $HTTP_SERVER_VARS[HTTP_X_FORWARDED_FOR] och inte $REMOTE_ADDR är att den senare bara visar serverns IP av någon anledning...
Det som verkar vara fel är som sagt den query som tar bort alla fält där IP är lika med IP...
$id = session_id();
$date = time() - 180;
$time = time();
@mysql_query("DELETE FROM online WHERE date < '$date'") or die(mysql_error());
@mysql_query("DELETE FROM online WHERE id = '$id'") or die(mysql_error());
@mysql_query("INSERT INTO online VALUES( '$id', '$time' )") or die(mysql_error());
$query = mysql_query("SELECT * FROM online") or die(mysql_error());
$count = mysql_num_rows($query) or die(mysql_error());
if ($date_optimize == 01) {
mysql_query("OPTIMIZE TABLE online");
}
Hmm jag har nått liknande script som du kan prova... men jag förstår inte varför du gör en DELETE FROM online WHERE id='$id' ??
$id = session_id();
$date = time()-180;
$time = time();
mysql_query("DELETE FROM online WHERE date < $date") or die(mysql_error());
$query = mysql_query("SELECT * FROM online WHERE id='$id'") or die(mysql_error());
if ($row = mysql_fetch_row($query))
{
mysql_query("UPDATE online SET date='$time' WHERE id='$id'") or die(mysql_error());
}
else
{
mysql_query("INSERT INTO online (id, date) VALUES('$id', '$time')") or die(mysql_error());
}
$query = mysql_query("SELECT * FROM online") or die(mysql_error());
$count = mysql_num_rows($query) or die(mysql_error());
@mysql_query("DELETE FROM online WHERE date < '$date'") or die(mysql_error());
$res = mysql_query("SELECT * FROM online WHERE id = '$id'");
$num = mysql_num_rows($res);
if($num == 0){
@mysql_query("INSERT INTO online VALUES( '$id', '$time' )") or die(mysql_error());
} else {
@mysql_query("UPDATE online SET date = '$time' WHERE id = '$id'") or die(mysql_error());
}
Eller
@mysql_query("DELETE FROM online WHERE date < '$date'") or die(mysql_error());
@mysql_query("DELETE FROM online WHERE id = '$id'");
@mysql_query("INSERT INTO online VALUES( '$id', '$time' )") or die(mysql_error());
402 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a