---
title: "Uhm"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/16649-uhm"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Viking"
published: "2002-02-01T14:16:00.000Z"
updated: "2002-02-01T22:15:00.000Z"
replies: 14
views: 194
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/16649-uhm"
---

# Uhm

## #1 — Viking, 2002-02-01T14:16Z

```
$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>

Permalänk: https://www.webforum.nu/p/16649

## #2 — Kim, 2002-02-01T14:31Z

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?

Permalänk: https://www.webforum.nu/p/326145

## #3 — Viking, 2002-02-01T15:10Z

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

Permalänk: https://www.webforum.nu/p/326146

## #4 — Viking, 2002-02-01T19:33Z

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");
}
```

Permalänk: https://www.webforum.nu/p/326147

## #5 — stevenet, 2002-02-01T19:43Z

smart!

\------------------
SteveNet

Permalänk: https://www.webforum.nu/p/326148

## #6 — Viking, 2002-02-01T19:53Z

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

Permalänk: https://www.webforum.nu/p/326149

## #7 — stevenet, 2002-02-01T20:27Z

Felmeddelande?

\------------------
SteveNet

Permalänk: https://www.webforum.nu/p/326150

## #8 — ThACRoW, 2002-02-01T20:41Z

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());
```

Permalänk: https://www.webforum.nu/p/326151

## #9 — nicclas, 2002-02-01T20:46Z

Stoppa in ett:

session_register("bull");

överst i Vikings kod så skall det fungera.

/nicclas

Permalänk: https://www.webforum.nu/p/326152

## #10 — SPiN, 2002-02-01T21:19Z

<http://cgi.webforum.nu/wf/Forum12/HTML/002169.html#4>

Permalänk: https://www.webforum.nu/p/326153

## #11 — Viking, 2002-02-01T21:39Z

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  ;)

Permalänk: https://www.webforum.nu/p/326154

## #12 — Viking, 2002-02-01T21:49Z

SPiN: Tack för tipset, men jag föredrar att göra själv! Blir roligare då, + att man lär sig mer  :)

Permalänk: https://www.webforum.nu/p/326155

## #13 — SPiN, 2002-02-01T21:52Z

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

Permalänk: https://www.webforum.nu/p/326156

## #14 — Viking, 2002-02-01T21:53Z

:OO  §e

Permalänk: https://www.webforum.nu/p/326157

## #15 — Viking, 2002-02-01T22:15Z

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());
```

Permalänk: https://www.webforum.nu/p/326158

---

Tråden på webben: https://www.webforum.nu/amne/php/16649-uhm
