Gå til innhold

Motvirke dobbelposting ved refresh av siden


Anbefalte innlegg

Videoannonse
Annonse

mest vanlig er vel å kjøre en refresh/redirect slik at nettleseren ikke sender inn POST-data på nytt hvis noen trykker refresh i nettleseren. Utover det må man begynne å loggføre når ting ble utført sist og sjekke om brukeren allerede har gjort noe de x siste sekundene (eller hva det nå måtte være).

Lenke til kommentar

Det enkleste er, som Ernie sa, å bruke redirect. Når noen poster noe, så kan du legge inn en redirect fra siden som legger inn posten i databasen til siden som viser posten. Du kan bruke følgende kode for å legge til en redirect:

 

header('303 See Other HTTP/1.1');
header('Location: http://din.internett.si.de/noe/');
// Dette vil også fungere:
header('Location: ../enfil.php');

Lenke til kommentar

Det er og mulig å bruke en token i skjemaet om bare vil virke en gang, andre gang brukere sender inn skjemaet med samme token så skjer det ingen ting. Dette vil også motvirke CSRF.

 

Eks:

if(count($_POST) > 2)
{
    if(strcmp($_POST['token'], $_SESSION['token']) != 0) 
    {
        // Feilmelding, evnt bare vist skjemaet på nytt
    }
     // Pass på at token'en bare fungere en gang
     unset($_SESSION['token']);
}
?>
<form>
.....
<?php
$token = md5(microtime());
$_SESSION['token'] = $token;
?>
<input type="hidden" name="token" value="<?php echo $token ?>">
....
</form>

Endret av Runar0
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...