Avatar billede supremebot Nybegynder
18. september 2004 - 11:19 Der er 10 kommentarer

unset($HTTP_POST_VARS)

når man poster noget fra en form er der så en måde man kan unset'et det på, så man ikke er ude for at den gør det samme igen hvis man trykker F5
Avatar billede andy Nybegynder
18. september 2004 - 11:20 #1
Redirect til en anden side med:
header('Location: fil.php');

Der kunne fx stå "tak for din email" eller lign hvis det var en form mail der blev submittet..
Avatar billede supremebot Nybegynder
18. september 2004 - 11:22 #2
det ved jeg godt man kan men jeg syntes det er en lidt trals måde. kan man ikke bare fortælle den at der ikke er postet noget mere
Avatar billede andy Nybegynder
18. september 2004 - 11:25 #3
Nej. Trykker brugeren F5 bliver al post-data sendt igen.

Du kunne evt sætte en cookie når du har behandlet data, og tjekke på denne cookie før du behandler data.
Avatar billede stalle Nybegynder
18. september 2004 - 11:26 #4
Måden jeg gør det på, er ved at tjekke om én bestemt variabel er sat, fx din "send" knap, før jeg udfører det der skal ske når man har udfyldt en formular.

Det du så kan gøre, er at, som du skriver, unsette den variabel som knappen indeholder.
På den måde undgår du at man får sendt de samme informationer, ved tryk på F5(opdatering af siden)
Avatar billede supremebot Nybegynder
18. september 2004 - 11:29 #5
kan du lave et lille eksempel på det så jeg er sikker på jeg forstår det 100%
Avatar billede Slettet bruger
18. september 2004 - 11:32 #6
Hvis du tjekker op på en variabel, kan det lade sig gøre.

if(isset($_POST["sent"])) {
   
    // lav dine opdateringer.
    unset($_POST["sent"]);
}
Avatar billede supremebot Nybegynder
18. september 2004 - 11:33 #7
jeg her prøvet det her man det syntes jeg ikke virker:

if(isset($_POST[tilfkatnavn])){
    if($_POST[tilfkatnavn] != ""){
        $base = "cms_billedDB";
        include '../mysql.inc';
   
        mysql_query("INSERT INTO kategorier SET tekst = '$_POST[tilfkatnavn]'");
        mysql_close($connection);
        echo mysql_error();
        $besked = '<div style="color: #009900">Kategorien "'.$_POST[tilfkatnavn].'" er nu tilføjet</div>';
        unset($_POST[tilfkatnavn]);
        unset($HTTP_POST_VARS);
    }else{
        $besked = 'FEJL: Prøv et tilføj en kategori igen';
        unset($_POST[tilfkatnavn]);
        unset($HTTP_POST_VARS);
    }
}
Avatar billede andy Nybegynder
18. september 2004 - 11:36 #8
Øhh, det kan man da ikke?! Når brugeren refresher siden blive alle data sendt igen. Så er det ligemeget hvad du unset'er. Måske har jeg misforstået spørgsmålet..
Avatar billede Slettet bruger
18. september 2004 - 11:44 #9
ah ja :)

Måske man bare skulle ud og have lidt frisk luft. Du er faktisk nød til at smide brugeren videre til en anden side.

Men du behøver jo nødvendigvis ikke smide brugeren til en ny side.
Du kunne jo smide vedkommende tilbage til den side, hvor formen blev afsendt fra, og samtidig give en besked om at formularen blev submittet med sucess :)

f.eks.
header("Location: foo.php?error=0");
exit;

Hvis error er lig med 1 på foo.php så kan du udskrive en fejl :)
Avatar billede supremebot Nybegynder
18. september 2004 - 11:49 #10
nå det er også sådan jeg gør, jeg syntes bare det er en trals måde.
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