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

Klik hier voor een 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
<?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/">&lt;-- Terug naar Scripts</a></p>
    <h1>Antiflood</h1>
    <div id="info">
        <p>PHP versie: &gt;= 4.1.0</p>
    </div>
        
    <?php
        antiflood
();
    
?>        
</div>
</body>
</html>

Reacties