Avatar billede infinito Nybegynder
14. oktober 2005 - 10:59 Der er 6 kommentarer

header(location) og post data

Hej,

Nedestående kode modtager data fra en form, indsætter dem i en database og redirecter hvis data er blevet indsendt. Det fungerer også fint - problemet opstår at hvis man siger Refresh på den side hvor man ryger hen EFTER man har indsat data i basen, så spørger Firefox (til max os x) om man vil indsende data til formularen igen og siger man ja, så sætter den hele molevitten ind i basen igen og redirecter til samme side igen, hvor det af en eller anden grund er muligt at poste form data igen og igen:

<?php
if($_GET[action] == "savenew" && !empty($_POST)){
    $date_added = time();
    if(mysql_query("... sql kode...")){
        unset($_POST);
        $new_id = mysql_insert_id();
        header("location: main.php?t=vis_kunde&id=$new_id");
    } else {
        print mysql_error();
    }
}
?>
Avatar billede infinito Nybegynder
14. oktober 2005 - 11:00 #1
prøvede med unset() som i kan se, det virkede ikke.
Avatar billede dmdisco Nybegynder
14. oktober 2005 - 11:10 #2
ellers lav et tjek om dataen er blevet indsat i databasen før og hvis den er skal den ikke indsætte dem igen
Avatar billede Slettet bruger
14. oktober 2005 - 11:11 #3
En header() skulle meget gerne forhindre at en form kan submittes flere gange. Der må være noget galt...
Avatar billede Slettet bruger
14. oktober 2005 - 11:12 #4
Jeg undrer mig lidt, hvorfor har du både $_GET og $_POST?

Koden i if($_GET[action] == "savenew" && !empty($_POST)){ vil aldrig kunne uedføres.

Der kan ikke være GET data i en POST form og omvendt.
Avatar billede hmortensen Nybegynder
14. oktober 2005 - 11:17 #5
el_barto:
En form som denne vil både sende get og post data...
<form action="side.php?action=skriv" method="post">
<input type="text" name="noget">
<input type="submit">
</form>

infinito, prøv at sætte en exit efter din header (tror ikke det vil hjælpe på dit problem, men sikkre eksekvering af resten af din kode).
Avatar billede infinito Nybegynder
14. oktober 2005 - 11:26 #6
som hmortensen siger, så er det sådan en form jeg bruger.

Jeg har selv løst problemet, men jeg tror problemet ligger i dette:

Formen findes på main.php?t=opretkunde

Siden som indsætter data er main.php?t=gemkunde

og siden der viderestilles til er main.php?t=vis_kunde

Overstående medsender POST data hele vejen rundt.

Hvis jeg istedet sender formularens data til bare gemkunde.php og viderestiller til main.php?t=vis_kunde, så medsendes formularens data ikke. Jeg ved ikke om det er en fejl i firefox, at hvis filnavnet (main.php) er ens hele vejen rundt, så skal den medsende formularens data.
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