Gå til innhold

Skjema svar til mail.


Anbefalte innlegg

Hei.

Jeg har et skjema som ser slik ut etter at det er fylt ut.

<?php

$til = "[email protected]";

$topic = "Produkter/Jobb";

$melding = "Navn:
$navn\n\n\n";

$melding .= "Telefon:
$nr\n\n\n";

$melding .= "E-post:
$epost\n\n\n";

$melding .= "Alder:
$alder\n\n\n";

$melding .= "Ønsker å bli kontaktet:
$når\n\n\n";

$melding .= "Har dette som mål:
$mål\n\n\n";

mail($til, $topic, $melding,'');
?>
<div>
Takk for at du fylte ut dette skjemaet.<br>
Vi skal prøve å ta kontakt når det passer best for deg.<br>
<br>
<br>
<strong>Navn:</strong><br>
<?php echo $_POST["navn"]; ?> <br><br>

<strong>Telefon:</strong><br>
<?php echo $_POST["nr"]; ?> <br><br>

<strong>E-post:</strong><br>
<?php echo $_POST["epost"]; ?> <br><br>

<strong>Alder:</strong><br>
<?php echo $_POST["alder"]; ?> <br><br>

<strong>Ønsker å bli knotaktet:</strong><br>
<?php echo $_POST["når"]; ?> <br><br>

<strong>Har dette som mål:</strong><br>
<?php echo $_POST["mål"]; ?> <br><br>
</div>

Problemet er at dersom personen som har fylt ut skjemaet refresher siden, så vil jeg få 2 like mailer eller mer, det kommer ann på hvor mange ganger siden blir refreshet.

Er det noe jeg kan gjøre, eller hva skal jeg gjøre?

Jeg vet det går ann å gjøre noet, men hva og hvordan?

 

Takker for all hjelpen jeg får... :thumbup:

:p

Endret av aog
Lenke til kommentar
Videoannonse
Annonse

En løsning er å bare vise siden der det står:

 

"Takk for at du fylte ut dette skjemaet.<br>

Vi skal prøve å ta kontakt når det passer best for deg.<br>"

 

i noen sekunder, så sender du dem tilbake til start. Da kan de refreshe så mye de vil uten at en mail blir sendt. Bruk gjerne <form method="post" action="mail.php"> også, siden det da dukker opp en advarsel når man refresher.

Lenke til kommentar

Bruk header("Location: ..."), da blir ikke mailen sendt to ganger, uansett om de trykker "oppdater".

Legg merke til at du også burde gjøre noen forbedringer på scriptet ditt, legg til en funksjon som sjekker om mailen blir sendt eller ikke.

 

if(!mail($til, $topic, $melding,'')){

dersom mailen ikke kan sendes så burde den lagres i en database eller fil - på den måten "forsvinner" ikke som f.eks. blir avvist av serveren.

}

Lenke til kommentar
if(!mail($til, $topic, $melding,'')){

dersom mailen ikke kan sendes så burde den lagres i en database eller fil - på den måten "forsvinner" ikke som f.eks. blir avvist av serveren.

}

Hvorfor skulle den bli avist? ..jeg bare spørr..

Det er jo altid samme e-post adressen som blir send til..

 

 

 

Men... Kan jeg ikke legge inn en knap som du må trykke på for å sende skjemate?

..istede for å sende med engang..

 

1. Du fyller ut skjema

2. trykker Ok

3. leser gjennom

4. trykker send, (eller tilbake for å redigere), og du blir vist til hovedsiden.

 

 

 

Noen som kan vise meg hvordan jeg gjøre det?

Går det ann å gjøre det?

Lenke til kommentar

joda. det lar seg enkelt gjøre. en måte vil jo være å bare sende useren til ett nytt form. der man først, øverst på 'siden' kan lese gjennom det man skal sende, også lagrer du alle variablene i hidden fields, og har en knapp der du kan velge å sende, avbryte eller endre ting.

Lenke til kommentar
joda. det lar seg enkelt gjøre. en måte vil jo være å bare sende useren til ett nytt form. der man først, øverst på 'siden' kan lese gjennom det man skal sende, også lagrer du alle variablene i hidden fields, og har en knapp der du kan velge å sende, avbryte eller endre ting.

hvordan? :p

 

 

 

 

 

Bruk header("Location: ..."), da blir ikke mailen sendt to ganger, uansett om de trykker "oppdater".

Prøvde det...

det førte til at siden refreshet seg selv.

(Jeg bruker php include, og har ikke header og greier i filene som jeg inkluderer..)

...derfor fungerte ikke det.. godt mulig jeg gjorde noe feil, men...

 

Er det ikke noe måte å disable "Refresh"?

Lenke til kommentar

hmm.. du kan jo lagre alle sendte mailer med ett avsender og overskrift i ett array, og bruke in_array() mot mail sendingen.. eller bruke unix time og hindre i tilfelle differansen på sist sendte mail er for liten..

 

men, ja. som torbjørn sier, header location

Endret av zyrtech_
Lenke til kommentar
QUOTE 

Bruk header("Location: ..."), da blir ikke mailen sendt to ganger, uansett om de trykker "oppdater".

 

 

 

Prøvde det...

det førte til at siden refreshet seg selv.

 

Det virker ikke..

 

Går det ikke ann å lage en knapp som sender mailen samtidig som du blir sendt til startsiden?

Endret av aog
Lenke til kommentar
QUOTE 

Bruk header("Location: ..."), da blir ikke mailen sendt to ganger, uansett om de trykker "oppdater".

 

 

 

Prøvde det...

det førte til at siden refreshet seg selv.

 

Det virker ikke..

 

Går det ikke ann å lage en knapp som sender mailen samtidig som du blir sendt til startsiden?

det er jo det vi prøver å fortelle deg: det er det location header gjør.

Lenke til kommentar

Dette har jeg i toppen på mail2.php

<meta HTTP-EQUIV="REFRESH" content="3; url="http://www.server.com/index.php">

Slik?

Dersom jeg har det slik så blir siden refreshet hvert tredje sekund, og jeg får mail for hver gang.

Det er jo ikke det jeg ønsker.

Lenke til kommentar

Når jeg bruker

<?php
mail($til, $topic, $melding,'');
header('Location: http://www.server.com/index.php');
?>

..så får jeg denne meldingen:

 

Warning: Cannot modify header information - headers already sent by (output started at /home/server/public_html/aog/hl/index.php:4) in /home/server/public_html/aog/hl/mail2.php on line 63

Lenke til kommentar

vit hva headers er. HTTP trafikk består av headers og innhold. innhold er f.eks html som vises på en htmlside, men kan også være binære bildedata hvis du laster ned et bilde. Headers sendes før innholdet, og php lurer deg til å tro at det ikke finnes. Trikset er at alt av headers må gjøres unna før det kommer noe innhold, det er slik HTTP er definert. Php gjør slik at den automatisk viser alle headers idet du begynner å sende innhold (html). Ønsker du å endre headers (vha header-funksjonen), så må det gjøres *før* det kommer noe output. Hvis ikke får du feilen at headers already er sent, (nynorsk), og det er da naturlig nok for sent å komme med ønsker om nye headers. Finn hvor output starter og kjør header() kallet før det.

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...