Online Users script
namelijk een script wat de Online gebruikers laat zien voor mijn site.. (http://www.lagazy-intruders.com/pli)...
heeft mischien iemand zoiets voor mij?
als ik nog dingen aan moet passen, geen probleem
ik vind het dan wel uit, heb tog wel enige ervaring met php.. (heb die hele site zelf gescript)
iniedergeval... Alvast bedankt.. ^_^
naam ip datum -> sec sinds epoch lijkt me het simpelst.
Als ze van pagina veranderen,
delete & nieuwe insert
dan bij elke pagina, als datum langer dan 10minuten geleden is, delete...
ipv die delete & nieuwe insert, zou een update ook gaan, alleen niet zo zeker... als ze 11 min lezen op een pagina, zal de update geen effect hebben, omdat dat record dan al gewist is....
Succes
maar wat is nou het scriptje van zo'n timer dat na 10 minuten niks gedaan is bla bla bla.. ?
Code (php)
1
2
3
4
2
3
4
<?
$datum = date("U") - 600; # -> 600sec -> 10min
mysql_query("DELETE FROM online WHERE datum < '" . $datum . "'");
?>
$datum = date("U") - 600; # -> 600sec -> 10min
mysql_query("DELETE FROM online WHERE datum < '" . $datum . "'");
?>
edit:
doordat ik include gebruik in indes.php, kan ik dan ook die regel alleen in index.php zetten, dat het niet meer in de anderen hoeft?
Gewijzigd op 23/01/2005 20:41:00 door Yme-Jan
lijkt me wel :)
Try and find out ?
Of denk logisch na... Het antwoord bestaat uit 2 letters ^^
ja toch wel eh ? :P
Rafael:
Als ze inloggen, een insert query:
naam ip datum -> sec sinds epoch lijkt me het simpelst.
Als ze van pagina veranderen,
delete & nieuwe insert
dan bij elke pagina, als datum langer dan 10minuten geleden is, delete...
ipv die delete & nieuwe insert, zou een update ook gaan, alleen niet zo zeker... als ze 11 min lezen op een pagina, zal de update geen effect hebben, omdat dat record dan al gewist is....
Succes
naam ip datum -> sec sinds epoch lijkt me het simpelst.
Als ze van pagina veranderen,
delete & nieuwe insert
dan bij elke pagina, als datum langer dan 10minuten geleden is, delete...
ipv die delete & nieuwe insert, zou een update ook gaan, alleen niet zo zeker... als ze 11 min lezen op een pagina, zal de update geen effect hebben, omdat dat record dan al gewist is....
Succes
Gebruik dan MySQL functie: replace, Deze functie is neller dan 2 query's het is een mix van insert en update dus er hoeft geen delete of insert te worden gedaan.
voor meer info http://dev.mysql.com/doc/mysql/en/replace.html
Gewijzigd op 23/01/2005 20:50:00 door Thijs -
$date = date("U");
mysql_query("REPLACE INTO pli_online (id, username, date) VALUES (NULL,'" . $_SESSION["user"] . "','$date'));
$datum = date("U") - 600; # -> 600sec -> 10min
mysql_query("DELETE FROM pli_online WHERE datum < '" . $datum . "'");
als dit niet klopt......
r23:
$datum = date("U") - 600;
hmm... k heb zo'n idee dak da REPLACE tog niet helemaal snap..
zou je een voorbeel regeltje willen maken?
mysql_query("REPLACE INTO pli_online (id, username, date) VALUES (NULL,'" . $_SESSION["user"] . "','$date'));
is niet goed d8 ik zo...
Gewijzigd op 23/01/2005 21:04:00 door Yme-Jan
@Hiska; khad nog nooit van dat commando gehoord... Ga het eens uitpluizen.. Bedankt voor de tip ;)
maar telkens als ik op vernieuwen druk..
komt er 1 bij...
das ook niet helemaal goed denk ik..
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
require 'connect.php';
mysql_select_db("usersonline");
$s_aantal = mysql_query("Select Count(id) From usersonline Where ip = '".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error());
if (!mysql_result($s_aantal, 0))
mysql_query("Insert Into usersonline (id, ip, tijd) Values ('NULL', '".$_SERVER['REMOTE_ADDR']."', '".time()."')") or die(mysql_error());
else {
mysql_query("Update usersonline Set tijd = '".time()."' Where ip = '".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error());
mysql_query("Delete From usersonline Where tijd < ".time()." - 60*5") or die(mysql_error());
}
// Bezoekers online definieren
$s_aantal = mysql_query("Select Count(id) From usersonline");
$aantal = mysql_result($s_aantal, 0);
//$aantal++;
if ($aantal > 1 || $aantal == 0)
$bez = "Er zijn <b>".$aantal."</b> bezoekers online";
else
$bez = "Er is <b>één</b> bezoeker online";
?>
require 'connect.php';
mysql_select_db("usersonline");
$s_aantal = mysql_query("Select Count(id) From usersonline Where ip = '".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error());
if (!mysql_result($s_aantal, 0))
mysql_query("Insert Into usersonline (id, ip, tijd) Values ('NULL', '".$_SERVER['REMOTE_ADDR']."', '".time()."')") or die(mysql_error());
else {
mysql_query("Update usersonline Set tijd = '".time()."' Where ip = '".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error());
mysql_query("Delete From usersonline Where tijd < ".time()." - 60*5") or die(mysql_error());
}
// Bezoekers online definieren
$s_aantal = mysql_query("Select Count(id) From usersonline");
$aantal = mysql_result($s_aantal, 0);
//$aantal++;
if ($aantal > 1 || $aantal == 0)
$bez = "Er zijn <b>".$aantal."</b> bezoekers online";
else
$bez = "Er is <b>één</b> bezoeker online";
?>
En maak tabel:
CREATE TABLE `usersonline` (
`id` int(11) NOT NULL auto_increment,
`ip` varchar(50) NOT NULL default '',
`tijd` varchar(50) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=963 ;
Zet dit in de pagina:
En dan werkt t.
Groet, Niels
nu nog dat hij de usernames laat zien die online zijn......
alle usernames en ids uit de usertabel halen en dan met for de online userids doorlopen en de bij behorende naam echoen
maar hier snap ik duz helemaal geen snars van :P
Bij alles wat ik wil/kan maken moet ik eigenlijk altijd een voorbeeld bij zien.. dan is het denk ik toch iets beter te snappen..
of dat iemand een kant en klaar scriptje heeft die ik kan door neuzen.... dat mag ook... ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
require 'connect.php';
mysql_select_db("usersonline");
$s_aantal = mysql_query("Select Count(id) From usersonline Where ip = '".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error());
if (!mysql_result($s_aantal, 0))
mysql_query("Insert Into usersonline (id, ip, tijd) Values ('NULL', '".$_SERVER['REMOTE_ADDR']."', '".time()."')") or die(mysql_error());
else {
mysql_query("Update usersonline Set tijd = '".time()."' Where ip = '".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error());
mysql_query("Delete From usersonline Where tijd < ".time()." - 60*5") or die(mysql_error());
}
$query = mysql_query("SELECT username, userid FROM users") or die(mysql_error());
while($row = mysql_fetch_array($query)) {
$users[$row["userid"]] = $row["username"];
}
$query = mysql_query("SELECT id FROM usersonline") or die(mysql_error());
while($row = mysql_fetch_array($query)) {
$bez .= $user[$row["id"]] . "<br />\n";
}
?>
require 'connect.php';
mysql_select_db("usersonline");
$s_aantal = mysql_query("Select Count(id) From usersonline Where ip = '".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error());
if (!mysql_result($s_aantal, 0))
mysql_query("Insert Into usersonline (id, ip, tijd) Values ('NULL', '".$_SERVER['REMOTE_ADDR']."', '".time()."')") or die(mysql_error());
else {
mysql_query("Update usersonline Set tijd = '".time()."' Where ip = '".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error());
mysql_query("Delete From usersonline Where tijd < ".time()." - 60*5") or die(mysql_error());
}
$query = mysql_query("SELECT username, userid FROM users") or die(mysql_error());
while($row = mysql_fetch_array($query)) {
$users[$row["userid"]] = $row["username"];
}
$query = mysql_query("SELECT id FROM usersonline") or die(mysql_error());
while($row = mysql_fetch_array($query)) {
$bez .= $user[$row["id"]] . "<br />\n";
}
?>
voor de rest: wat niels postte
k heb al een goede die zo werkt:
In Login.php komt boven de header('Location: index.php');
--dit:
$time = time();
mysql_query("INSERT INTO `online` (id, username, date) VALUES (NULL, '" . $_SESSION["user"] . "', '$time')");
--in elke andere pagina komt dit:
$date = time();
$online_verval = time()-300;
mysql_query("UPDATE `pli_online` SET `date`='$date' WHERE `username`='" . $_SESSION["user"] . "'");
mysql_query("DELETE FROM pli_online WHERE date < '$online_verval'");
Rafael:
ipv die delete & nieuwe insert, zou een update ook gaan, alleen niet zo zeker... als ze 11 min lezen op een pagina, zal de update geen effect hebben, omdat dat record dan al gewist is....
Mij ook goed als jullie het zo willen... ^^
Ik zou eerder eens zoeken naar Hiska's uitleg....
ik kan geen info vinden ofer dat replace.. en dit wertk ook wel.. ;)