Who's online
Poster: Alex VandewoudeM'n eerste script voor
webmasterz, een who's online box (whoisbox.php genaamd, ik kwam niet
direct op een goeie naam). Hij kijkt na wie er in de vorige 5 minuten op
de site is geweest (en er nog op zit), ook mogelijkheid tot het veranderen
van de nickname... het herkennnen van de users (en of dezelfde user al is
opgeslagen in de db en is op F5 heeft geduwd) gebeurd aan de hand van
cookies, het 1ste cookie "whoisbox-goldenarrow" kijkt na of ze al geweest
zijn, dit blijft maar 5 minuten staan. Het andere cookie
(whoisbox-goldenarrow-naam) blijft een heel jaar staan en onthoud de
nickname van de persoon, en gebruikt die ook de volgende keer de user op
de pagina komt.
commentaren zouden welkom zijn ;-)
code: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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
dbtable
-------
CREATE TABLE whoisbox (
whois_ID int(11) NOT NULL
auto_increment,
naam mediumtext NOT NULL,
tijd int(11) NOT
NULL default '0',
PRIMARY KEY (whois_ID)
) TYPE=MyISAM;
connect.inc.php
---------------
<?php
$db=
mysql_connect("localhost", "username", "password") or die ("<b>Error,
couldn't connect to database</b>");
mysql_select_db("je db", $db);
?>
whoisbox.php
------------
<?php
//verbinding met de db
include("connect.inc.php");
//functie om microtijd sinds 1/01/1970 te meten en te retourneren
function getmicrotime() {
$split = explode(" ", microtime() );
return ( (float)$split[0] + (float)$split[1] );
}
//alles uit de db halen en ze rangschikken zodat de laatste
vanboven staat
$query_main = "SELECT * FROM whoisbox ORDER BY whois_ID
DESC";
$result_main = mysql_query ( $query_main );
$data_main =
mysql_fetch_array( $result_main );
//als de persoon zijn naam nog
niet aangepast heeft en er dus geen cookie is dan wordt
//hij nu
"guest" genoemd, anders wordt de naam uit dat cookie gebruikt
if(
!$HTTP_COOKIE_VARS['whoisbox-goldenarrow-naam'] ){
$naam =
"guest";
}
else
{
$naam =
$HTTP_COOKIE_VARS['whoisbox-goldenarrow-naam'];
}
//als de
persoon nog niet is langsgeweest of langer dan 5 minuten niet is
langsgeweest
//dan wordt hij nu in de db bijgevoegd, en z'n whois id
wordt in een cookie opgeslagen
if(
!$HTTP_COOKIE_VARS['whoisbox-goldenarrow'] ){
//de
persoon is nog niet langsgekomen dus moet hij bijgevoegd worden in de
db>>insert
$query = "INSERT INTO whoisbox (tijd,naam) VALUES
('".getmicrotime()."', '".$naam."')";
//als er nog
geen mensen in de db staan, dan wordt het whois id om op te slaan in het
cookie
//bepaald als 1, dit is wel enkel het geval bij de eerste
keer dat het script in gebruik wordt
//genomen
if (
$data_main['whois_ID']=="" ){
$whois_ID = 1;
}
else
{
//anders wordt het whois id bepaald als het
laatste dat in de db staat + 1
$whois_ID =
($data_main['whois_ID']+1);
}
}
else
{
//de
persoon is al is langsgekomen, binnen de 5 minuten, hij moet dus geupdated
worden
//met en de "tijd" wordt geupdated (met de fuctie
getmicrotime() ).
$query = "UPDATE whoisbox SET
tijd='".getmicrotime()."', naam='".$naam."' WHERE
whois_ID=".$HTTP_COOKIE_VARS['whoisbox-goldenarrow'];
$whois_ID
= $HTTP_COOKIE_VARS['whoisbox-goldenarrow'];
}
//de query
uitvoeren (inserten of updaten)
mysql_query ( $query );
//markeer dat user is langsgeweest, maak cookie voor 5 minuten
setCookie("whoisbox-goldenarrow", $whois_ID, time()+ (5*60) );
//opruiming houden in alle vorige users (we kunnen het result van
het mainquery nog gebruiken ;-))
//let's recycle...
while (
$data_clean = mysql_fetch_array ( $result_main ) ){
$tijd_nu =
getmicrotime();
$tijd_toen = $data_clean['tijd'];
$verschil = $tijd_nu - $tijd_toen;
//als de persoon er al
langer dan 5 minuten instaat dan em eruit zwieren (tijden in sec)
if ( $verschil > 300){
$query_clean = "DELETE FROM whoisbox
WHERE whois_ID=".$data_clean['whois_ID'];
mysql_query (
$query_clean );
}
}
echo "Users die binnen de vorige 5
minuten aanwezig waren op deze pagina:
//geef alle
users weer die binnen de vorige 5 minuten op de pagina zijn geweest
//voor het gemak zullen we ditte result X noemen <img src="Pics/smileys/wink.gif" border="0" alt="smileys">, don't ask me
why, ik kwam ni direct op korte naam
//had evengoed
result_allusers_updated kunnen heten ma dat was wat te lang naar men
goesting...
$resultX = mysql_query("SELECT * FROM whoisbox");
while( $data = mysql_fetch_array ( $resultX ) ){
echo
$data['naam'];
echo "
}
echo "<p><a
href='whoisbox-verandernaam.php' target='_blank'>Verander
Nickname</a></p>";
?>
whoisbox-verandernaam.php
-------------------------
<?php
if($HTTP_GET_VARS['submit']){
$naam =
$HTTP_GET_VARS['naam'];
if ($naam=="" || $naam==" "){
$naam = "guest";
}
//hiervoor geen enkele output zetten of
hij kan cookie niet schrijven
//(header already sent)
setCookie("whoisbox-goldenarrow-naam", $naam, time()+(3600*24*356) );
echo "naam veranderd";
}
else
{
?>
<form
action="<?php echo $PHP_SELF; ?>" method="GET">
naam: <input
type='text' name='naam' />
<input
type='submit' name='submit' value='submit' />
</form>
<?php
}
| Rate dit script: |
Je hebt nog niet gestemd. Rate hier het scripts:
|  |
| Reacties: |
| Er zijn 2 reacties geplaatst.
|
| Arno Moonen 22-05-2003 18:03 |
Leuk!
Heb je ergens
een voorbeeld online?
PS: Leuk dat je even opmerkt dat
Webmasterz.nl een nieuwe naam heeft "PHPFreakz"
NIET
DUS!!! |
| theo 25-05-2003 09:23 |
ik heb hem gevraagt of wij
dit script ook op webmasterz mochten posten, waarschijnlijk de naam
vergeten te weizigen |