VikingMedlem sedan maj 20003 652 inlägg $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:
http://okkido.nu/henrik/skripts/info.php
------------------
Hamster!
KimMedlem sedan jan. 20007 697 inlägg 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];
Fungerar det bättre så här?
VikingMedlem sedan maj 20003 652 inlägg Nej, tyvärr :(
http://okkido.nu/henrik/skripts/online.php
Där är skriptet
$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... :l
Det som verkar vara fel är som sagt den query som tar bort alla fält där IP är lika med IP...
------------------
Hamster!
VikingMedlem sedan maj 20003 652 inlägg Löste det med session_id()!
$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");
}
------------------
Hamster!
stevenetMedlem sedan juni 20001 251 inlägg smart!
------------------
SteveNet
------------------
- Det var motgräs!
Roland Sandberg förklarar varför han missade öppet mål.
VikingMedlem sedan maj 20003 652 inlägg Men tyvärr funkade det inte :(
Ska prova med att själv tilldela sessionen en ID, men tror inte att det funkar bättre :l
------------------
Hamster!
stevenetMedlem sedan juni 20001 251 inlägg Felmeddelande?
------------------
SteveNet
------------------
- Det var motgräs!
Roland Sandberg förklarar varför han missade öppet mål.
ThACRoWMedlem sedan dec. 2001314 inlägg 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());
nicclasMedlem sedan feb. 20001 050 inlägg Stoppa in ett:
session_register("bull");
överst i Vikings kod så skall det fungera.
/nicclas
SPiNMedlem sedan mars 20007 896 inlägg VikingMedlem sedan maj 20003 652 inlägg Jamen helvete! Jag glömde en liten session_start() :x x(
Så går det när man är trött och ska försöka göra lite PHP ;)
------------------
Hamster!
VikingMedlem sedan maj 20003 652 inlägg SPiN: Tack för tipset, men jag föredrar att göra själv! Blir roligare då, + att man lär sig mer :)
------------------
Hamster!
SPiNMedlem sedan mars 20007 896 inlägg Självklart! Det förstår jag helt, det är därför jag har gjort en också. :)
Men när jag lägger upp den, kan du ju alltid se hur jag har gjort - och imponeras. :e
------------------
SPiN, bjorne.w@telia.com
VikingMedlem sedan maj 20003 652 inlägg :OO §e
------------------
Hamster!
VikingMedlem sedan maj 20003 652 inlägg Vad är bäst? Båda sätten fungerar...
@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());
------------------
Hamster!
[Redigerat av Viking den 02 feb 2002]