Online Users script
Ik heb nu al heel wat site's afgezocht, en nooit gevonden wat ik nou eigenlijk zoek..
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.. ^_^
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.. ^_^
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
zoiets had ik zelf idd ook wel in gedachten..
maar wat is nou het scriptje van zo'n timer dat na 10 minuten niks gedaan is bla bla bla.. ?
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 . "'");
?>
ik zal es probeeren... bedankt :-)
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?
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 :)
Wat denk je nu zelf ?
Try and find out ?
Of denk logisch na... Het antwoord bestaat uit 2 letters ^^
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 -
dan heb ik dit in mijn index staan:
$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......
$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......
Parse error: parse error, unexpected T_STRING in /data/members/paid/l/a/lagazy-intruders.com/htdocs/www/pli/index.php on line 23
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...
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 ;)
oke... nu zet hij het ding in de db..
maar telkens als ik op vernieuwen druk..
komt er 1 bij...
das ook niet helemaal goed denk ik..
maar telkens als ik op vernieuwen druk..
komt er 1 bij...
das ook niet helemaal goed denk ik..
Zet dit boven de html code:
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
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
das met bezoekersaantal...
nu nog dat hij de usernames laat zien die online zijn......
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
Ik dacht dat ik best veel van php afwist..
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... ;)
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
das moeilijk doen duz.... ;)
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'");
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.. ;)




