Bezoekers online
Bedankt alvast.
Het kan. Maar niet echt aan te raden zonder database..
Je kan gegevens ook opslaan in XML of in een tekstbestandje... maar het is wel veel meer werk dan SQL.
Ja maar hoe moet dat dan moet ik iets met ip doen? Kan iemand mij een voorbeeld geven?
niemand die voor mij het script kan maken?
Youri schreef op 30.06.2008 23:48:
niemand die voor mij het script kan maken?
Ik verveel me. Dus ik ga is kijken of ik wat kan bakken voor je.
EDIT: ik heb er een class van gemaakt. Vond ik mooier en makkenlijker.
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
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
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
<?php
/**
* OnlineScript
*
* PHP versie 5.2 getest moet volgensmij op PHP versie 5 ook werken
*
* Gebruik is alsvolgd gewoon aan het begin van de pagina de class aanroepen.
* bijv: (hier ga ik vanuit dat je dit bestand hebt opgeslagen in
* onlinescript.class.php)
* <?php
* include 'onlinescript.class.php';
* $OnlineList = new OnlineScript();
* ?>
* Hiermee word automatisch het gebruiker ip geupdate.
*
* Als je de lijst wilt uitlezen gebruik je de functie getLastOnlineList($tijd)
* hier is $tijd het aantal minuten geleden dat een gebruiker nog 'actief' word
* beschouwd. weer een voorbeeldje om het uit te lezen:
* <?php
* foreach ($OnlineList->getLastOnlineList(5) as $value) {
* echo $value.'<br />';
* }
* ?>
* Dit geeft een lijst van gebruikers die actief waren de laatste 5 minuten.
*
* @version 1.0
* @author Martijn van Wensveen
*/
class OnlineScript
{
protected $bestand;
/**
* Word automatisch aangeroepen wanneer class word aangeroepen. En zorgt
* ervoor dat de gebruiker gelijk gewijzigd word op de actief lijst. Je kan
* ook nog kiezen voor een ander bestand, en of de filecheck uitgevoerd
* moet worden.
*
* @param String $bestand De bestand naam, standaart online.txt
* @param Boolean $fileCheck Of de filecheck uitgevoerd moet worden
* standaart True.
*/
public function __construct($bestand = 'online.txt', $fileCheck = TRUE) {
$this->bestand = $bestand;
if ($filecheck == TRUE) {
OnlineScript::checkFile();
}
// Kijken of ip adres al een keer voorkomt
if (!OnlineScript::checkUser()) {
// Niet dus, dus nu gaan we gebruiker toevoegen.
$newValue = $_SERVER['REMOTE_ADDR']."..".time()."\n";
$oldValue = file_get_contents($this->bestand);
if (!file_put_contents($this->bestand, $oldValue.$newValue)) {
echo 'Er is iets mis gegaan met updaten van online bestand.';
}
}
else {
// Wel nu word alleen die regel aangepast en komen er dus geen
// onnodige regels erbij.
$string = '';
foreach ($file as $value) {
$string .= $value;
}
if (!file_put_contents($this->bestand, $string)) {
echo 'Er is iets mis gegaan met updaten van online bestand.';
}
}
}
/**
* Lijst ophalen met laatst actieve ip adressen
*
* @param Integer $time Hoeveel minuten geleden een gebruiker nog beschouwd
* word als 'actief'
* @return Array lijst met actieve gebruikers.
*/
public function getLastOnlineList($time) {
// Hoelang geleden een gebruiker nog 'actief' is
$time = time() - ($time * 60);
// Bestand openen in een array
$file = file($this->bestand);
$userarray = array();
foreach ($file as $value) {
$userdata = explode('..', $value);
if ($userdata[1] > $time) {
// Gebruiker actief dus op de lijst zetten.
array_push($userarray, $userdata[0]);
}
}
return $userarray;
}
/**
* Kijkt of user in het bestand staat.
*
* @return Boolean True als user is gevonden.
*/
private function checkUser() {
// Uitlezen van bestand.
$file = file($this->bestand);
foreach ($file as $key => $value) {
// Splitten van ip en tijd
$value = explode('..', $value);
if ($value[0] == $_SERVER['REMOTE_ADDR']) {
$file[$key] = $value[0]."..".time()."\n";
// user is gevonden.
return TRUE;
}
}
// user is niet gevonden
return FALSE;
}
/**
* Kijkt of bestand al bestaat. Zoniet maakt hij hem aan.
*
*/
private function checkFile() {
if (!file_exists($this->bestand)) {
$lol = fopen($this->bestand, 'w+');
fclose($lol);
}
}
/**
* Leegt de lijst. De opgegeven time variablen is voor de tijd waarvoor
* alles word weg gehaald.
*
* @param Integer $time In uren.
*/
public function clearList($time) {
// Tijd in uren, voor dit tijdstip word alles weg gehaald.
$time = time() - ($time * 3600);
// Uitlezen van bestand
$file = file($this->bestand);
foreach ($file as $value) {
$value = explode('..', $this->bestand);
if ($value[1] > $time) {
// Is nog binnen de tijd dus word toegevoegd aan nieuw bestand
$newFile = $value[0].'..'.$value[1];
}
}
// Oude records nu weghalen door alles te overschrijven.
if (file_put_contents($this->bestand, $newFile)) {
echo 'Online bestand is succesvol geleegd.';
}
else {
echo 'Er is iets mis gegaan bij het legen van het online bestand';
}
}
}
?>
/**
* OnlineScript
*
* PHP versie 5.2 getest moet volgensmij op PHP versie 5 ook werken
*
* Gebruik is alsvolgd gewoon aan het begin van de pagina de class aanroepen.
* bijv: (hier ga ik vanuit dat je dit bestand hebt opgeslagen in
* onlinescript.class.php)
* <?php
* include 'onlinescript.class.php';
* $OnlineList = new OnlineScript();
* ?>
* Hiermee word automatisch het gebruiker ip geupdate.
*
* Als je de lijst wilt uitlezen gebruik je de functie getLastOnlineList($tijd)
* hier is $tijd het aantal minuten geleden dat een gebruiker nog 'actief' word
* beschouwd. weer een voorbeeldje om het uit te lezen:
* <?php
* foreach ($OnlineList->getLastOnlineList(5) as $value) {
* echo $value.'<br />';
* }
* ?>
* Dit geeft een lijst van gebruikers die actief waren de laatste 5 minuten.
*
* @version 1.0
* @author Martijn van Wensveen
*/
class OnlineScript
{
protected $bestand;
/**
* Word automatisch aangeroepen wanneer class word aangeroepen. En zorgt
* ervoor dat de gebruiker gelijk gewijzigd word op de actief lijst. Je kan
* ook nog kiezen voor een ander bestand, en of de filecheck uitgevoerd
* moet worden.
*
* @param String $bestand De bestand naam, standaart online.txt
* @param Boolean $fileCheck Of de filecheck uitgevoerd moet worden
* standaart True.
*/
public function __construct($bestand = 'online.txt', $fileCheck = TRUE) {
$this->bestand = $bestand;
if ($filecheck == TRUE) {
OnlineScript::checkFile();
}
// Kijken of ip adres al een keer voorkomt
if (!OnlineScript::checkUser()) {
// Niet dus, dus nu gaan we gebruiker toevoegen.
$newValue = $_SERVER['REMOTE_ADDR']."..".time()."\n";
$oldValue = file_get_contents($this->bestand);
if (!file_put_contents($this->bestand, $oldValue.$newValue)) {
echo 'Er is iets mis gegaan met updaten van online bestand.';
}
}
else {
// Wel nu word alleen die regel aangepast en komen er dus geen
// onnodige regels erbij.
$string = '';
foreach ($file as $value) {
$string .= $value;
}
if (!file_put_contents($this->bestand, $string)) {
echo 'Er is iets mis gegaan met updaten van online bestand.';
}
}
}
/**
* Lijst ophalen met laatst actieve ip adressen
*
* @param Integer $time Hoeveel minuten geleden een gebruiker nog beschouwd
* word als 'actief'
* @return Array lijst met actieve gebruikers.
*/
public function getLastOnlineList($time) {
// Hoelang geleden een gebruiker nog 'actief' is
$time = time() - ($time * 60);
// Bestand openen in een array
$file = file($this->bestand);
$userarray = array();
foreach ($file as $value) {
$userdata = explode('..', $value);
if ($userdata[1] > $time) {
// Gebruiker actief dus op de lijst zetten.
array_push($userarray, $userdata[0]);
}
}
return $userarray;
}
/**
* Kijkt of user in het bestand staat.
*
* @return Boolean True als user is gevonden.
*/
private function checkUser() {
// Uitlezen van bestand.
$file = file($this->bestand);
foreach ($file as $key => $value) {
// Splitten van ip en tijd
$value = explode('..', $value);
if ($value[0] == $_SERVER['REMOTE_ADDR']) {
$file[$key] = $value[0]."..".time()."\n";
// user is gevonden.
return TRUE;
}
}
// user is niet gevonden
return FALSE;
}
/**
* Kijkt of bestand al bestaat. Zoniet maakt hij hem aan.
*
*/
private function checkFile() {
if (!file_exists($this->bestand)) {
$lol = fopen($this->bestand, 'w+');
fclose($lol);
}
}
/**
* Leegt de lijst. De opgegeven time variablen is voor de tijd waarvoor
* alles word weg gehaald.
*
* @param Integer $time In uren.
*/
public function clearList($time) {
// Tijd in uren, voor dit tijdstip word alles weg gehaald.
$time = time() - ($time * 3600);
// Uitlezen van bestand
$file = file($this->bestand);
foreach ($file as $value) {
$value = explode('..', $this->bestand);
if ($value[1] > $time) {
// Is nog binnen de tijd dus word toegevoegd aan nieuw bestand
$newFile = $value[0].'..'.$value[1];
}
}
// Oude records nu weghalen door alles te overschrijven.
if (file_put_contents($this->bestand, $newFile)) {
echo 'Online bestand is succesvol geleegd.';
}
else {
echo 'Er is iets mis gegaan bij het legen van het online bestand';
}
}
}
?>
Ben benieuwd wat jullie er van vinden. Kritiek kan ik hebben :) En misschien werkt hij niet helemaal goed want ik heb hem ook niet goed getest.
Gewijzigd op 01/01/1970 01:00:00 door Martiveen -
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
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
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
<?php
/**
* OnlineScript
*
* PHP versie 5.2 getest moet volgensmij op PHP versie 5 ook werken
*
* Gebruik is alsvolgd gewoon aan het begin van de pagina de class aanroepen.
* bijv: (hier ga ik vanuit dat je dit bestand hebt opgeslagen in
* onlinescript.class.php)
* <?php
* include 'onlinescript.class.php';
* $OnlineList = new OnlineScript();
* ?>
* Hiermee word automatisch het gebruiker ip geupdate.
*
* Als je de lijst wilt uitlezen gebruik je de functie getLastOnlineList($tijd)
* hier is $tijd het aantal minuten geleden dat een gebruiker nog 'actief' word
* beschouwd. weer een voorbeeldje om het uit te lezen:
* <?php
* foreach ($OnlineList->getLastOnlineList(5) as $value) {
* echo $value.'<br />';
* }
* ?>
* Dit geeft een lijst van gebruikers die actief waren de laatste 5 minuten.
*
* @version 1.0
* @author Martijn van Wensveen
*/
class OnlineScript
{
protected $bestand;
/**
* Word automatisch aangeroepen wanneer class word aangeroepen. En zorgt
* ervoor dat de gebruiker gelijk gewijzigd word op de actief lijst. Je kan
* ook nog kiezen voor een ander bestand, en of de filecheck uitgevoerd
* moet worden.
*
* @param String $bestand De bestand naam, standaart online.txt
* @param Boolean $fileCheck Of de filecheck uitgevoerd moet worden
* standaart True.
*/
public function __construct($bestand = 'online.txt', $fileCheck = TRUE) {
$this->bestand = $bestand;
if ($fileCheck == TRUE) {
OnlineScript::checkFile();
}
// Kijken of ip adres al een keer voorkomt
if (!OnlineScript::checkUser()) {
// Niet dus, dus nu gaan we gebruiker toevoegen.
$newValue = $_SERVER['REMOTE_ADDR']."..".time()."\n";
$oldValue = file_get_contents($this->bestand);
if (!file_put_contents($this->bestand, $oldValue.$newValue)) {
echo 'Er is iets mis gegaan met updaten van online bestand.';
}
}
else {
// Wel nu word alleen die regel aangepast en komen er dus geen
// onnodige regels erbij.
$string = '';
$file = file($this->bestand);
foreach ($file as $value) {
// Kijken of hij bij de user is die geupdate moet worden.
$value = explode('..', $value);
if ($value[0] == $_SERVER['REMOTE_ADDR']) {
// User gevonden, tijd updaten
$string .= $value[0]."..".time()."\n";
}
else {
// Geen user dus gewoon verder gaan..
$string .= $value[0]."..".$value[1];
}
}
// Alles uitschrijven
if (!file_put_contents($this->bestand, $string)) {
echo 'Er is iets mis gegaan met updaten van online bestand.';
}
}
}
/**
* Lijst ophalen met laatst actieve ip adressen
*
* @param Integer $time Hoeveel minuten geleden een gebruiker nog beschouwd
* word als 'actief'
* @return Array lijst met actieve gebruikers.
*/
public function getLastOnlineList($time) {
// Hoelang geleden een gebruiker nog 'actief' is.
// Dit is in minuten
$time = time() - ($time * 60);
// Bestand openen in een array
$file = file($this->bestand);
$userarray = array();
foreach ($file as $value) {
$userdata = explode('..', $value);
if ($userdata[1] > $time) {
// Gebruiker actief dus op de lijst zetten.
array_push($userarray, $userdata[0]);
}
}
return $userarray;
}
/**
* Kijkt of user in het bestand staat.
*
* @return Boolean True als user is gevonden.
*/
private function checkUser() {
// Uitlezen van bestand.
$file = file($this->bestand);
foreach ($file as $key => $value) {
// Splitten van ip en tijd
$value = explode('..', $value);
if ($value[0] == $_SERVER['REMOTE_ADDR']) {
$file[$key] = $value[0]."..".time()."\n";
// user is gevonden.
return TRUE;
}
}
// user is niet gevonden
return FALSE;
}
/**
* Kijkt of bestand al bestaat. Zoniet maakt hij hem aan.
*
*/
private function checkFile() {
if (!file_exists($this->bestand)) {
$lol = fopen($this->bestand, 'w+');
fclose($lol);
}
}
/**
* Leegt de lijst. De opgegeven time variablen is voor de tijd waarvoor
* alles word weg gehaald.
*
* @param Integer $time In uren.
*/
public function clearList($time) {
// Tijd in uren, voor dit tijdstip word alles weg gehaald.
$time = time() - ($time * 3600);
// Uitlezen van bestand
$file = file($this->bestand);
foreach ($file as $value) {
$value = explode('..', $this->bestand);
if ($value[1] > $time) {
// Is nog binnen de tijd dus word toegevoegd aan nieuw bestand
$newFile = $value[0].'..'.$value[1];
}
}
// Oude records nu weghalen door alles te overschrijven.
if (file_put_contents($this->bestand, $newFile)) {
echo 'Online bestand is succesvol geleegd.';
}
else {
echo 'Er is iets mis gegaan bij het legen van het online bestand';
}
}
}
?>
/**
* OnlineScript
*
* PHP versie 5.2 getest moet volgensmij op PHP versie 5 ook werken
*
* Gebruik is alsvolgd gewoon aan het begin van de pagina de class aanroepen.
* bijv: (hier ga ik vanuit dat je dit bestand hebt opgeslagen in
* onlinescript.class.php)
* <?php
* include 'onlinescript.class.php';
* $OnlineList = new OnlineScript();
* ?>
* Hiermee word automatisch het gebruiker ip geupdate.
*
* Als je de lijst wilt uitlezen gebruik je de functie getLastOnlineList($tijd)
* hier is $tijd het aantal minuten geleden dat een gebruiker nog 'actief' word
* beschouwd. weer een voorbeeldje om het uit te lezen:
* <?php
* foreach ($OnlineList->getLastOnlineList(5) as $value) {
* echo $value.'<br />';
* }
* ?>
* Dit geeft een lijst van gebruikers die actief waren de laatste 5 minuten.
*
* @version 1.0
* @author Martijn van Wensveen
*/
class OnlineScript
{
protected $bestand;
/**
* Word automatisch aangeroepen wanneer class word aangeroepen. En zorgt
* ervoor dat de gebruiker gelijk gewijzigd word op de actief lijst. Je kan
* ook nog kiezen voor een ander bestand, en of de filecheck uitgevoerd
* moet worden.
*
* @param String $bestand De bestand naam, standaart online.txt
* @param Boolean $fileCheck Of de filecheck uitgevoerd moet worden
* standaart True.
*/
public function __construct($bestand = 'online.txt', $fileCheck = TRUE) {
$this->bestand = $bestand;
if ($fileCheck == TRUE) {
OnlineScript::checkFile();
}
// Kijken of ip adres al een keer voorkomt
if (!OnlineScript::checkUser()) {
// Niet dus, dus nu gaan we gebruiker toevoegen.
$newValue = $_SERVER['REMOTE_ADDR']."..".time()."\n";
$oldValue = file_get_contents($this->bestand);
if (!file_put_contents($this->bestand, $oldValue.$newValue)) {
echo 'Er is iets mis gegaan met updaten van online bestand.';
}
}
else {
// Wel nu word alleen die regel aangepast en komen er dus geen
// onnodige regels erbij.
$string = '';
$file = file($this->bestand);
foreach ($file as $value) {
// Kijken of hij bij de user is die geupdate moet worden.
$value = explode('..', $value);
if ($value[0] == $_SERVER['REMOTE_ADDR']) {
// User gevonden, tijd updaten
$string .= $value[0]."..".time()."\n";
}
else {
// Geen user dus gewoon verder gaan..
$string .= $value[0]."..".$value[1];
}
}
// Alles uitschrijven
if (!file_put_contents($this->bestand, $string)) {
echo 'Er is iets mis gegaan met updaten van online bestand.';
}
}
}
/**
* Lijst ophalen met laatst actieve ip adressen
*
* @param Integer $time Hoeveel minuten geleden een gebruiker nog beschouwd
* word als 'actief'
* @return Array lijst met actieve gebruikers.
*/
public function getLastOnlineList($time) {
// Hoelang geleden een gebruiker nog 'actief' is.
// Dit is in minuten
$time = time() - ($time * 60);
// Bestand openen in een array
$file = file($this->bestand);
$userarray = array();
foreach ($file as $value) {
$userdata = explode('..', $value);
if ($userdata[1] > $time) {
// Gebruiker actief dus op de lijst zetten.
array_push($userarray, $userdata[0]);
}
}
return $userarray;
}
/**
* Kijkt of user in het bestand staat.
*
* @return Boolean True als user is gevonden.
*/
private function checkUser() {
// Uitlezen van bestand.
$file = file($this->bestand);
foreach ($file as $key => $value) {
// Splitten van ip en tijd
$value = explode('..', $value);
if ($value[0] == $_SERVER['REMOTE_ADDR']) {
$file[$key] = $value[0]."..".time()."\n";
// user is gevonden.
return TRUE;
}
}
// user is niet gevonden
return FALSE;
}
/**
* Kijkt of bestand al bestaat. Zoniet maakt hij hem aan.
*
*/
private function checkFile() {
if (!file_exists($this->bestand)) {
$lol = fopen($this->bestand, 'w+');
fclose($lol);
}
}
/**
* Leegt de lijst. De opgegeven time variablen is voor de tijd waarvoor
* alles word weg gehaald.
*
* @param Integer $time In uren.
*/
public function clearList($time) {
// Tijd in uren, voor dit tijdstip word alles weg gehaald.
$time = time() - ($time * 3600);
// Uitlezen van bestand
$file = file($this->bestand);
foreach ($file as $value) {
$value = explode('..', $this->bestand);
if ($value[1] > $time) {
// Is nog binnen de tijd dus word toegevoegd aan nieuw bestand
$newFile = $value[0].'..'.$value[1];
}
}
// Oude records nu weghalen door alles te overschrijven.
if (file_put_contents($this->bestand, $newFile)) {
echo 'Online bestand is succesvol geleegd.';
}
else {
echo 'Er is iets mis gegaan bij het legen van het online bestand';
}
}
}
?>
Error gefixed. Was nog wat vergeten met het ombouwen ;)
Gewijzigd op 01/01/1970 01:00:00 door Martiveen -
Werkt het script dan nog steeds zoals je bedoelde?
Verder natuurlijk mijn complimenten.
Kees schreef op 04.07.2008 23:36:
In de regels 43 en 46 komen de variabelen $fileCheck en $filecheck voor. Als je hier dezelfde variabele bedoelt, moet je dus één van beide veranderen.
Werkt het script dan nog steeds zoals je bedoelde?
Verder natuurlijk mijn complimenten.
Werkt het script dan nog steeds zoals je bedoelde?
Verder natuurlijk mijn complimenten.
Woha mijn dank. Ik begreep al niet waarom hij daar foutmeldingen gaf. Bij het aanmaken van een bestand. Het is nu veranderd
Sorry dat ik niet reageerde, ik was op vakantie. Ik zal meteen kijken of ie werkt :)
Bumpen::
SanThe.
Probeer zoveel mogelijk echo's in je klassen te vermijden, je kunt beter met een exception class werken en d.m.v. de try/catch methode werken.