Antiflood
Toelichting
Stel met dit script een maximum aan het aantal bezoeken per gebruiker per tijdseenheid. Met dit script zijn die vervelende gebruikers die je gastenboek volspammen verleden tijd.
Voorbeeld
Script
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
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
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
function antiflood()
{
/********************************************************************************
* CONFIG Variabelen *
* *
* INT $tijdsduur: tijdslimiet in seconden waarbinnen een pagina bezocht wordt. *
* INT $visits: aantal bezoeken dat binnen de tijdslimit mag plaatsvinden. *
* BOOL $melding: zet op TRUE om een melding te geven van het aantal bezoeken *
********************************************************************************/
$tijdsduur = 60;
$visits = 10;
$melding = true;
if(isset($_SESSION['flood']))
{
if($_SESSION['flood']['start'] + $tijdsduur >= time())
{
$_SESSION['flood']['start'] = time();
$_SESSION['flood']['visits']++;
if($_SESSION['flood']['visits'] >= $visits)
{
$foutmelding = '<p>Je hebt deze pagina meer dan '.$visits.' keer bezocht binnen '.$tijdsduur.' seconden.</p>';
$foutmelding .= '<p>Dit valt onder flooden en daarom is de toegang tot deze pagina tijdelijk geblokkeerd.</p>';
exit($foutmelding);
}
else
{
if($melding === true)
{
$aantal = $visits - $_SESSION['flood']['visits'];
echo '<p>Je mag deze pagina nog <b>'.$aantal.'</b> keer bezoeken in de komende '.$tijdsduur.' seconden.</p>';
}
}
}
else
{
$_SESSION['flood']['start'] = time();
$_SESSION['flood']['visits'] = 1;
if($melding === true)
{
$aantal = $visits - $_SESSION['flood']['visits'];
echo '<p>Je mag deze pagina nog <b>'.$aantal.'</b> keer bezoeken in de komende '.$tijdsduur.' seconden.</p>';
}
}
}
else
{
$_SESSION['flood']['start'] = time();
$_SESSION['flood']['visits'] = 1;
if($melding === true)
{
$aantal = $visits - $_SESSION['flood']['visits'];
echo '<p>Je mag deze pagina nog <b>'.$aantal.'</b> keer bezoeken in de komende '.$tijdsduur.' seconden.</p>';
}
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Jorendewit.nl - PHP Scripts - Antiflood</title>
<link rel="stylesheet" href="../styles/default.css" type="text/css" media="screen" />
</head>
<body>
<div id="wrap">
<p class="none small align-right"><a href="/view/11/"><-- Terug naar Scripts</a></p>
<h1>Antiflood</h1>
<div id="info">
<p>PHP versie: >= 4.1.0</p>
</div>
<?php
antiflood();
?>
</div>
</body>
</html>
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
function antiflood()
{
/********************************************************************************
* CONFIG Variabelen *
* *
* INT $tijdsduur: tijdslimiet in seconden waarbinnen een pagina bezocht wordt. *
* INT $visits: aantal bezoeken dat binnen de tijdslimit mag plaatsvinden. *
* BOOL $melding: zet op TRUE om een melding te geven van het aantal bezoeken *
********************************************************************************/
$tijdsduur = 60;
$visits = 10;
$melding = true;
if(isset($_SESSION['flood']))
{
if($_SESSION['flood']['start'] + $tijdsduur >= time())
{
$_SESSION['flood']['start'] = time();
$_SESSION['flood']['visits']++;
if($_SESSION['flood']['visits'] >= $visits)
{
$foutmelding = '<p>Je hebt deze pagina meer dan '.$visits.' keer bezocht binnen '.$tijdsduur.' seconden.</p>';
$foutmelding .= '<p>Dit valt onder flooden en daarom is de toegang tot deze pagina tijdelijk geblokkeerd.</p>';
exit($foutmelding);
}
else
{
if($melding === true)
{
$aantal = $visits - $_SESSION['flood']['visits'];
echo '<p>Je mag deze pagina nog <b>'.$aantal.'</b> keer bezoeken in de komende '.$tijdsduur.' seconden.</p>';
}
}
}
else
{
$_SESSION['flood']['start'] = time();
$_SESSION['flood']['visits'] = 1;
if($melding === true)
{
$aantal = $visits - $_SESSION['flood']['visits'];
echo '<p>Je mag deze pagina nog <b>'.$aantal.'</b> keer bezoeken in de komende '.$tijdsduur.' seconden.</p>';
}
}
}
else
{
$_SESSION['flood']['start'] = time();
$_SESSION['flood']['visits'] = 1;
if($melding === true)
{
$aantal = $visits - $_SESSION['flood']['visits'];
echo '<p>Je mag deze pagina nog <b>'.$aantal.'</b> keer bezoeken in de komende '.$tijdsduur.' seconden.</p>';
}
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Jorendewit.nl - PHP Scripts - Antiflood</title>
<link rel="stylesheet" href="../styles/default.css" type="text/css" media="screen" />
</head>
<body>
<div id="wrap">
<p class="none small align-right"><a href="/view/11/"><-- Terug naar Scripts</a></p>
<h1>Antiflood</h1>
<div id="info">
<p>PHP versie: >= 4.1.0</p>
</div>
<?php
antiflood();
?>
</div>
</body>
</html>