Welkom, Gast. Je bent niet ingelogd.

php anti flood

Thomaz
'
Geplaatst op: 24 Feb 2007, 19:25
PimpCoins: 0
💸+
Bewerken Quote

Hallo allemaal,

Ik was bezig met een anti-flood systeempje, dus ik dacht dat maak je zo ff met sessions enzo. Maar ik snap nu ook niet echt wat er fout zit, wie kan mij uit de brand helpen?

Hier mijn scriptje tot nu toe:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

function flood()
{
$flood = (date("d-m-Y, H:i") + 15);
session_register('flood');
}

function antiflood()
{
$flood = $_SESSION['flood'];
$datum = date("d-m-Y, H:i");

    if (isset($_SESSION['flood']))
    {
        if ($flood < $datum)
        {
            echo "- Je hebt net een bericht gepost.";
        }
    }
}

?>

En dan had ik als er op post werd gedrukt de function flood() er staan, en als je naar reageren ging, dus de pagina om te reageren antiflood() er staan. Maar als ik binnen 15 seconden naar de reageer pagina ga, kan ik nog steeds reageren, wat is der fout aan mijn script?

Bvd.

Thomas

Badeendje
Pompehdompehdom
moderator
Geplaatst op: 24 Feb 2007, 19:36
PimpCoins: 0
💸+
Bewerken Quote

staat session_register bij je hosting wel aan ?

en ook al werk ik zowat nooit met sessies, kan het er niet aan liggen als je met $_session werkt dat je bovenaan moet starten met
session_start(); ?

[Laatst bewerkt door Badeendje op zaterdag 24 februari 2007, om 19:38]
Thomaz
'
Geplaatst op: 24 Feb 2007, 19:53
PimpCoins: 0
💸+
Bewerken Quote

Het is gestart, de sessions. En session register werkt.

Triple
Geplaatst op: 24 Feb 2007, 20:41
PimpCoins: 0
💸+
Bewerken Quote

Vervang

1
$flood = (date("d-m-Y, H:i") + 15);

door
1
$flood = (time() + 15);

edit:
oja
ook

1
$datum = date("d-m-Y, H:i");

vervangen met
1
$datum = time();

[Laatst bewerkt door Triple op zaterdag 24 februari 2007, om 20:43]
Thomaz
'
Geplaatst op: 24 Feb 2007, 22:07
PimpCoins: 0
💸+
Bewerken Quote

dAT werkt jammer genoeg nog niet

Triple
Geplaatst op: 24 Feb 2007, 22:17
PimpCoins: 0
💸+
Bewerken Quote

probeer eens met cookies te werken dan kijken of dat wel werkt

Thomaz
'
Geplaatst op: 24 Feb 2007, 22:23
PimpCoins: 0
💸+
Bewerken Quote

En als je geen cookies accepteert?

Syncie
Geplaatst op: 24 Feb 2007, 22:32
PimpCoins: 0
💸+
Bewerken Quote

Thomaz schreef:

En als je geen cookies accepteert?

Dan doen sessie's het ook niet want een sessie wordt gestart met een cookie die het sessId bevat.

De oplossing die werkt:

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
<?php

if(session_id() == 0){
    
    session_start();
    
}
// Als er nog geen sessie actief is start er 1.

function flood(){
    
    $_SESSION['flood'] = time() + 15;
    // Maak een nieuwe sessie aan die flood heet en zet daarin de timestamp van nu + 15 seconden.
    
}
// Maak de functie flood

function antiflood(){
    
    if(isset($_SESSION['flood'])){ // Kijk of er een sessie genaamd flood bestaat.
        
        if($_SESSION['flood'] < time()){ // Kijk of de timestamp van nu groter is dan de timestamp in de sessie.
            
            echo '- Je hebt net een bericht gepost.';
            
        }
        
    }
    
}
// Maak de functie antiflood

?>

ALs je echoed dat diegene net een bericht heeft gepost moet je natuurlijk wel de rest van de acties zoals posten afkappen. Je zou de function antiflood true of false kunnen laten returnen en dat dat zo in je script gebruiken:

1
2
3
4
5
6
7
8
9
10
<?php
if(antiflood()){



}else{



}

[Laatst bewerkt door Syncie op zaterdag 24 februari 2007, om 22:34]
Thomaz
'
Geplaatst op: 24 Feb 2007, 23:21
PimpCoins: 0
💸+
Bewerken Quote

Mijn manier werkte wel, alleen de datum string was verkeerd, en de function deed het niet. Nu dit opgelost is, werkt die gewoon

Syncie
Geplaatst op: 24 Feb 2007, 23:34
PimpCoins: 0
💸+
Bewerken Quote

Thomaz schreef:

Mijn manier werkte wel, alleen de datum string was verkeerd, en de function deed het niet. Nu dit opgelost is, werkt die gewoon

Zou toch die van mij nemen, session_register is al zo oud, werkt niet overal meer.

En lijkt me sterk dattie werkt met die date functie volgens mij kan dat niet eens

[Laatst bewerkt door Syncie op zaterdag 24 februari 2007, om 23:35]
📫

Nieuw privébericht

🔥

Registreren


Login