Avatar billede danm Nybegynder
28. juli 2008 - 01:53 Der er 7 kommentarer og
1 løsning

Undgå dobbeltpost ved refresh knappen

Ja, jeg har en side hvor der ved et tryk på en knap laves et postback, og dataen i dette postback bliver så gemt i en database.
Problemet som jeg nu har lagt mærke til, er at hvis jeg trykker på refresh knappen bliver dette indsendt igen (hvilket det sikkert skal), og der bliver indsat yderligere en række med samme data.

Hvordan kan jeg undgå dette???
Avatar billede roenving Novice
28. juli 2008 - 02:13 #1
Brug f.eks. det system, der bruges på dette site:

-- formens action (eller submit-knappen !-) indeholder bl.a. et unikt tidsstempel/id, og databasen kan kun registrere een post med dette id ...

-- desuden postes mod en helt anden side end den aktuelle, men efter registrering i databasen redirectes til afsender-siden !o]
Avatar billede olebole Juniormester
28. juli 2008 - 14:41 #2
<ole>

- like this  ;o)

<?php
// Her indsættes data

header("Location: ".$_POST["retPage"]);
?>

<form action="" method="post">
<input type="hidden" name="retPage" value="<?php print $_SERVER["PHP_SELF"] ?>">
--- --- ---
</form>

/mvh
</bole>
Avatar billede danm Nybegynder
28. juli 2008 - 14:52 #3
hvad betyder $_SERVER["PHP_SELF"] egentlig..

Jeg har så småt overvejet at lave nogle af tingene med xmlHttprequest, vil dette have samme problem med postback som ved post?
Avatar billede wanze Nybegynder
29. juli 2008 - 01:53 #4
Unødvendigt at bruge Javascript ind i det. Du skal ganske simpelt få den til at sende brugeren til en anden side efter dataen er sendt, som olebole også skriver det.

Hvorfor overhovedet spørge, hvad $_SERVER['PHP_SELF'] indeholder? Hvorfor ikke bare lave et eksempel?
Avatar billede supersquirrel Nybegynder
29. juli 2008 - 02:42 #5
Fordi han er interesseret at at vide hvad de enkle funktioner han bruger betyder - det er vel en god grund?

$_SERVER["PHP_SELF"] tager slutningen af et link.
Ex. http://www.eksperten.dk/spm/839609 -> her vil PHP_SELF tage /spm/839609
Avatar billede wanze Nybegynder
29. juli 2008 - 04:07 #6
Jeg synes bare det ville være hurtigere at teste - og mere præcist i det her tilfælde.

Nej, $_SERVER['PHP_SELF'] indeholder ikke slutningen af linket. Den indeholder navnet på filen, der køres.

Der bliver her på Eksperten anvendt mod_rewrite som er et Apache-modul, der bruges til at omskrive links. Filen spm/839609/ eksisterer ikke. Jeg ved ikke, hvilken fil det her foregår i, men det kunne være /index.phtml. En ting er i hvert fald sikkert - $_SERVER['PHP_SELF'] på http://www.eksperten.dk/spm/839609 vil ikke returnere /spm/839609.

Det er langt hurtigere at undersøge selv - og så kan man også være sikker på resultatet.
Avatar billede supersquirrel Nybegynder
29. juli 2008 - 10:39 #7
Oh oh ok. Tog det fra php.net - min fejl ;o)
Avatar billede danm Nybegynder
04. maj 2011 - 00:40 #8
lukker gammel tråd
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester