webForumDet fria alternativet

Uhm

14 svar · 189 visningar · startad av Viking

VikingMedlem sedan maj 20003 652 inlägg
#1
$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
#2

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
#3

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
#4

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
#5

smart!

------------------
SteveNet
------------------
- Det var motgräs!
Roland Sandberg förklarar varför han missade öppet mål.

VikingMedlem sedan maj 20003 652 inlägg
#6

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
#7

Felmeddelande?

------------------
SteveNet
------------------
- Det var motgräs!
Roland Sandberg förklarar varför han missade öppet mål.

ThACRoWMedlem sedan dec. 2001314 inlägg
#8

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
#9

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
#11

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
#12

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
#13

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
#14

:OO §e

------------------
Hamster!

VikingMedlem sedan maj 20003 652 inlägg
#15

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]

136 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)