Blodhemn Skrevet 28. februar 2004 Del Skrevet 28. februar 2004 Åhkei.. Dette er noe jeg har hatt store problemer med siden jeg begynte med php. Jeg sender variabler med method=post til en side. Denne siden legger variablene inn i databasen, eller sender den over mail med mail(). Hva den gjør er egentlig ikke viktig. Problemet er at hver gang jeg oppdaterer denne siden så får jeg "Siden kan ikke oppdateres uten å sende informasjonen på nytt." Og hvis man klikker Prøv på nytt så vil samme data sendes til mail, database eller hva det nå er som er aktuelt. Dette er problem-siden. <?php if ($navn=="" || $epost=="" || $beskjed == ""){ echo "Du må fylle inn alle feltene."; } else { $sendto = "[email protected]"; $from = "$epost"; $subject= "Tilbakemelding på siden fra: $navn"; $message = "Navn : $navn \nAv : $epost \nMelding: \n$beskjed"; $headers = "From: $from\r\n"; mail($sendto, $subject, $message, $headers); echo "Mailen er sendt"; } ?> Problemet er da at jeg får to eller flere like mailer om noen oppdaterer og klikker prøv på nytt. Det jeg lurer på er hvordan unngår man slikt? All hjelp taes hjertlig i mot Lenke til kommentar
???????? Skrevet 28. februar 2004 Del Skrevet 28. februar 2004 Du kan unngå det ved å bruker header("Location: side.php") etter du har behandlet variablene - men husk at siden som da behandler variablene ikke kan ha noen output. F.eks. skjemaet sendes til motta.php, da kan motta.php se slik ut: <?php $mail = mail("[email protected]", "Tittel", $_POST['beskjed']); // her sendes feltet beskjed til en mail adresse if($mail){ header("Location: side.php?sendt=ok"); exit; }else{ header("Location: side.php?sendt=feil"); exit; } ?> Som du ser så sender den også variabelen sendt, dette er veldig kjekt om du skal sette noe inn i en database - slik at brukeren ikke tror at skjemaet er sendt hvis det oppstår en feil med spørringen. sendt.php kan da se slik ut: <?php if($_GET['sendt'] == "ok"){ echo "Mailen ble sendt!"; }else{ echo "Beklager, mailen kunne ikke sendes. Vennligst forsøk igjen!"; } ?> Lenke til kommentar
ilpostino Skrevet 28. februar 2004 Del Skrevet 28. februar 2004 if ($navn=="" || $epost=="" || $beskjed == ""){echo "Du må fylle inn alle feltene."; } har funnet ut at du kan bruke empty istedenfor =="" slik at du kan 'forbedre' koden slik: if (empty($navn) || empty($epost) || empty($beskjed)) { echo("Du må fylle inn alle feltene"); } dette er vel antagelig bare småpirk, men et alternativ som vil kunne gjøre koden raskere Lenke til kommentar
Blodhemn Skrevet 28. februar 2004 Forfatter Del Skrevet 28. februar 2004 Hjertlig takk! Header greia virka veldig bra. Var litt redd for at den skulle ødelegge history knappen, men det gjorde den visst ikke. Veldig kjekt det med empty(). Det var jeg ikke klar over. Skal se om jeg ikke får tid til å bytte de ut Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå