onderschaduw
Home HomeScripts HomeArtikelen HomeTemplates HomeForum HomeZoeken
Who's online
Poster: Alex Vandewoude

M'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" genoemdanders 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 staandan 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 
        $whois_ID 

(
$data_main['whois_ID']+1); 
    } 

else 

    
//de 
persoon is al is langsgekomenbinnen de 5 minutenhij 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_IDtime()+ (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"$naamtime()+(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:
zeer slecht
slecht
matig
goed
zeer goed
rating

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


onderschaduw

Copyright © 2002-2008, Gemaakt door: Theo van Meijel, Versie 3.6
12 bezoekers en 68 pageviews vandaag! Totaal 1356 geregistreerde leden!