Avatar billede Slettet bruger
12. januar 2014 - 23:08 Der er 3 kommentarer og
1 løsning

Kontakt formular i HTML med PHP fil som "send-script"

Hej,

Jeg er ved at opbygge min hjemmeside fra bunden i HTML, og er nu kommet til den del hvor jeg skal have lavet en formular man kan kontakte mig igennem.

Til det fandt jeg et fint script på internettet som havde formularen i HTML og selve koden som skal sørge for at sende beskeden i PHP.

Men mit problem er så nu, at når jeg modtager beskeden på mail, er det uden afsender, og der kommer vi så til mit spørgsmå som er, hvordan får jeg PHP scriptet til at skrive den e-mail som brugeren taster ind i formularen som afsender e-mail?

Formularen ser således ud:
**************************

<form action="contact.php" method="post">
<font size="2">Dit Navn:</font><br>
<input type="text" name="cf_name" size="32" tabindex="1"><br>
<br>
<font size="2">Din E-Mail:</font><br>
<input type="text" name="cf_email" size="32" tabindex="1"><br>
<br>
<font size="2">Besked</font><br>
<textarea name="cf_message" rows="10" cols="40" tabindex="1"></textarea><br>
<br>
<input type="submit" value="Send Besked">
</form>

----

PHP scriptet ser således ud:
****************************

<?php
$field_name = $_POST['cf_name'];
$field_email = $_POST['cf_email'];
$field_message = $_POST['cf_message'];

$mail_to = 'mail@domæne.dk';
$subject = 'Ny besked fra '.$field_name;

$body_message = 'Navn: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Besked: '.$field_message;

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
<script language="javascript" type="text/javascript">
alert('Tak for din besked! Vi vil kontakte dig hurtigst muligt');
window.location = 'http://domæne.dk/kontakt-os';
</script>
<?php
}
else { ?>
<script language="javascript" type="text/javascript">
alert('Besked afsendelsen fejlede! prøv igen, eller send en E-Mail til: mail@domæne.dk');
window.location = 'http://domæne.dk/kontakt-os';
</script>
<?php
}
?>

---

Tak på forhånd!
Avatar billede repox Seniormester
12. januar 2014 - 23:24 #1
Efterhånden som teknologierne skrider frem, så bliver det mere og mere problematisk at lave løsninger hvor de som skriver en kontaktformular står som afsender i mailen.

Problemet er nemlig at hvis domænet for den afsender som du angiver har en SPF indstilling i sin DNS og din server kontrollerer denne SPF, så vil du aldrig modtage e-mailen.

Det er bedre at angive din egen afsender, så du er sikker på at modtage mailen.

Udover det, kan jeg se at du i din fjerde parameter i mail() funktionen har sat en variabel der hedder $headers. Det er her man normalt ville angive hvem afsenderen er - men du har ikke sat $headers nogen steder.

For at angive en afsender, skal din $headers variabel se således ud:

$headers = "From: \"Navn navnesen\" <email@example.com>\r\n";


Jeg håber det gav lidt opklaring.
Avatar billede Slettet bruger
13. januar 2014 - 08:07 #2
Tak for dit svar

Jeg vil forsøge om det virker,  så snart jeg er hjemme igen.
Melder tilbage her når jeg har et endeligt resultat.
Avatar billede Slettet bruger
13. januar 2014 - 14:19 #3
Tak det virkede, du har fået dine Points, det var en stor hjælp for mig som ikke er så god til PHP programmering endnu :)
Avatar billede repox Seniormester
13. januar 2014 - 14:25 #4
Det var godt :) jeg er glad for at kunne hjælpe :)
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