ip-loggerblokker-met-mysql
Gesponsorde koppelingen
PHP script bestanden
--------------de functie-----------------
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
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
<?php
Function limitView($views,$time,$paginaid){
$limit = (int) $views; // aantal bezoeken
$error = "<br /><br /><b><center>Sorry, u heeft deze pagina te veel bezocht de afgelopen $time minuten.</center></b>"; // error melding.
$remote_ip = $_SERVER['REMOTE_ADDR'];
$dbc = @mysqli_connect ('localhost', 'root', '', '') OR trigger_error("Databaseverbinding kon niet worden gemaakt.\n<br />MySQL - fout: " . mysqli_connect_error());
//query om te kijken of al bestaat
$q = "SELECT remote_log,id_pagina
FROM tbllog WHERE remote_log = '$remote_ip'
AND id_pagina = '$paginaid'
AND datum_log = CURDATE()";
$r = mysqli_query($dbc, $q);
if(mysqli_num_rows($r) == 0) {//geen resultaten dus aanmaken
$q = "INSERT INTO tbllog (id_pagina,remote_log,time_log,datum_log,log_aantal)
VALUES ('$paginaid', '$remote_ip', CURTIME(),CURDATE(),'1')";
$r = mysqli_query($dbc, $q);
$id = (int) mysqli_insert_id($dbc);//int van maken, niet gelukt dan nul
}else{ //als wel bestaat.
// Verwijderen als langer bestaat dan de opgegeven tijd.
$q1 = "SELECT id_log
FROM tbllog
WHERE MINUTE(TIMEDIFF(CURTIME(), time_log)) >= $time
AND remote_log = '$remote_ip'
AND id_pagina = '$paginaid'";
$r1 = mysqli_query($dbc, $q1);
if (mysqli_num_rows($r1) >= 1) {//verwijderen
while ($id_del = mysqli_fetch_array($r1)) {
$q2 = "DELETE FROM tbllog WHERE id_log = '".$id_del['id_log']."'";
$r2 = mysqli_query($dbc, $q2);
}
}else{
//currente aantal ophalen
$q3 = "SELECT id_pagina,log_aantal
FROM tbllog WHERE remote_log = '$remote_ip'
AND id_pagina = '$paginaid'
AND log_aantal <= '$limit'";
$r3 = mysqli_query($dbc, $q3);
if (mysqli_num_rows($r3) == 1) {//goed, 1 resultaat per gebruiker per pagina
list($id_pagina,$log_aantal) = mysqli_fetch_array($r3);
$log_aantal++;//1 bij optellen
//updaten
$q4 = "UPDATE tbllog
SET log_aantal = '$log_aantal'
WHERE id_pagina = '$id_pagina'
AND remote_log = '$remote_ip'";
$r4 = mysqli_query($dbc, $q4);
}else {//te veel bezoeken:
echo $error;
return TRUE;
}
}//einde else del
}//einde hoofd if/else
//oude record opschonen
$q5 = "DELETE FROM tbllog WHERE datum_log < CURDATE() - INTERVAL 1 DAY";
$r5 = mysqli_query($dbc, $q5);
}//einde functie
?>
Function limitView($views,$time,$paginaid){
$limit = (int) $views; // aantal bezoeken
$error = "<br /><br /><b><center>Sorry, u heeft deze pagina te veel bezocht de afgelopen $time minuten.</center></b>"; // error melding.
$remote_ip = $_SERVER['REMOTE_ADDR'];
$dbc = @mysqli_connect ('localhost', 'root', '', '') OR trigger_error("Databaseverbinding kon niet worden gemaakt.\n<br />MySQL - fout: " . mysqli_connect_error());
//query om te kijken of al bestaat
$q = "SELECT remote_log,id_pagina
FROM tbllog WHERE remote_log = '$remote_ip'
AND id_pagina = '$paginaid'
AND datum_log = CURDATE()";
$r = mysqli_query($dbc, $q);
if(mysqli_num_rows($r) == 0) {//geen resultaten dus aanmaken
$q = "INSERT INTO tbllog (id_pagina,remote_log,time_log,datum_log,log_aantal)
VALUES ('$paginaid', '$remote_ip', CURTIME(),CURDATE(),'1')";
$r = mysqli_query($dbc, $q);
$id = (int) mysqli_insert_id($dbc);//int van maken, niet gelukt dan nul
}else{ //als wel bestaat.
// Verwijderen als langer bestaat dan de opgegeven tijd.
$q1 = "SELECT id_log
FROM tbllog
WHERE MINUTE(TIMEDIFF(CURTIME(), time_log)) >= $time
AND remote_log = '$remote_ip'
AND id_pagina = '$paginaid'";
$r1 = mysqli_query($dbc, $q1);
if (mysqli_num_rows($r1) >= 1) {//verwijderen
while ($id_del = mysqli_fetch_array($r1)) {
$q2 = "DELETE FROM tbllog WHERE id_log = '".$id_del['id_log']."'";
$r2 = mysqli_query($dbc, $q2);
}
}else{
//currente aantal ophalen
$q3 = "SELECT id_pagina,log_aantal
FROM tbllog WHERE remote_log = '$remote_ip'
AND id_pagina = '$paginaid'
AND log_aantal <= '$limit'";
$r3 = mysqli_query($dbc, $q3);
if (mysqli_num_rows($r3) == 1) {//goed, 1 resultaat per gebruiker per pagina
list($id_pagina,$log_aantal) = mysqli_fetch_array($r3);
$log_aantal++;//1 bij optellen
//updaten
$q4 = "UPDATE tbllog
SET log_aantal = '$log_aantal'
WHERE id_pagina = '$id_pagina'
AND remote_log = '$remote_ip'";
$r4 = mysqli_query($dbc, $q4);
}else {//te veel bezoeken:
echo $error;
return TRUE;
}
}//einde else del
}//einde hoofd if/else
//oude record opschonen
$q5 = "DELETE FROM tbllog WHERE datum_log < CURDATE() - INTERVAL 1 DAY";
$r5 = mysqli_query($dbc, $q5);
}//einde functie
?>
--------------------De tabel ----------------------
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
CREATE TABLE `tbllog` (
`id_log` int(11) NOT NULL auto_increment,
`id_pagina` int(11) NOT NULL,
`remote_log` varchar(15) NOT NULL,
`time_log` time NOT NULL,
`datum_log` date NOT NULL,
`log_aantal` int(11) NOT NULL,
PRIMARY KEY (`id_log`)
)
`id_log` int(11) NOT NULL auto_increment,
`id_pagina` int(11) NOT NULL,
`remote_log` varchar(15) NOT NULL,
`time_log` time NOT NULL,
`datum_log` date NOT NULL,
`log_aantal` int(11) NOT NULL,
PRIMARY KEY (`id_log`)
)
---------gebruik op de pagina-------