Avatar billede weblance Nybegynder
02. november 2005 - 12:15 Der er 8 kommentarer og
1 løsning

Hvordan nulstiller jeg når den kommer tilbage?

Jeg har en side der ser således ud:

<? mail("post@domæne.dk", "Kontaktformular",
"Navn:  $navn
Adresse: $adresse
Postnr.: $postnr
By:      $by
Telefon: $telefon
Email:  $email
 
Besked:  $besked","From: $navn <$email>") ?>

<script type="text/javascript">

alert("Din besked er sendt");

function myRefresh() {
    history.back(-1);
    setTimeout("myRefresh()",1);
}
setTimeout("myRefresh()",1);


</script>

Men problemet er at når brugeren kommer tilbage til siden med formularen er den udfyldt med de oplysninger der lige er blevet indtastet og sendt. Hvordan nulstilles den når brugeren kommer tilbage?
Avatar billede olebole Juniormester
02. november 2005 - 12:32 #1
<ole>

Det er en skidt fremgangsmåde. I stedet skriver du et hidden-field i formen. Feltets værdi er en streng, svarende til URL'en til form-dokumentet:

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

I php filen skriver du så:

<?
# Her sender du mail'en, som du plejer

# Derefter sender du brugeren tilbage til den side, han kom fra
Header("Location: ".$_POST["retPage"]);
?>

Det er måden, man bruger, når du opretter en kommentar i denne tråd. Her er feltet tomt - og du kan trykke på såvel 'Back' som F5, uden 'katastrofer'  ;o)

/mvh
</bole>
Avatar billede weblance Nybegynder
02. november 2005 - 14:55 #2
Hvad så med javascriptet alert("Din besked er sendt"); ?

Før åbnede jeg en popup der sagde dette men mange har popup-blocker på, så virker den jo ikke.
Avatar billede weblance Nybegynder
02. november 2005 - 15:00 #3
Det virker da fint!

Ser nu sådan ud:

<? mail("post@domæne.dk", "Kontaktformular",
"Navn:  $navn
Adresse: $adresse
Postnr.: $postnr
By:      $by
Telefon: $telefon
Email:  $email
 
Besked:  $besked","From: $navn <$email>");
Header("Location: ".$_POST["retPage"]);
?>

Men hvorfor smider den mig tilbage til index filen? Er det meningen?
Avatar billede olebole Juniormester
02. november 2005 - 15:02 #4
Nope ... den skal redirecte til den URL, PHP skriver her:
  <input type="hidden" name="retPage" value="<?=$_SERVER["PHP_SELF"]?>">

Hvad skriver PHP der? Bruger du method="post" i formen?
Avatar billede weblance Nybegynder
02. november 2005 - 15:07 #5
Jeg brugte method="get" . . . der var fejlen jo!

Hvordan kan jeg så give brugeren besked om at beskeden er sendt?
Avatar billede olebole Juniormester
02. november 2005 - 15:26 #6
Prøv f.eks:

Header("Location: ".$_POST["retPage"]."?sent=OK");

- og så kan du jo skrive en streng ud på siden, hvis $_GET["sent"] er sat - og den er 'OK':

<?
if (isset($_GET["sent"]) && $_GET["sent"]=="OK") $msgTxt = "<div style='colcor:red;font-weight:bold'>Halløj, du har sendt en mail, Pomfrit!</div>"
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
... osv - osv ...

<?=$msgTxt?>
<form method="post" ..............>
  <input type="hidden" name="retPage" value="<?=$_SERVER["PHP_SELF"]?>">
  ... osv - osv ...
</form>

... osv - osv ...
</html>
Avatar billede olebole Juniormester
02. november 2005 - 15:28 #7
- og så glemte jeg zq da et semikolon - hvilket vil udløse en parse error:

<?
if (isset($_GET["sent"]) && $_GET["sent"]=="OK") $msgTxt = "<div style='colcor:red;font-weight:bold'>Halløj, du har sendt en mail, Pomfrit!</div>"; // <-- Dér manglede et semikolon  :)
?>
Avatar billede weblance Nybegynder
02. november 2005 - 17:41 #8
SMUKT olebole!

Send et svar, så får du pt!
Avatar billede weblance Nybegynder
19. august 2007 - 20:05 #9
Lukker
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