Avatar billede boxer Praktikant
14. maj 2007 - 19:19 Der er 3 kommentarer og
1 løsning

Mailformular med fælde. Redirect ved korrekt indtastet data.

Hej

Jeg bruger denne mail formular fra hjemmesideskolen:

<?php
if (isset($_POST['submit']))
{
if (!empty($_POST['name']) && // tjek, at der er skrevet et navn
!empty($_POST['email']) && // tjek, at der er skrevet en e-mail-adresse
!empty($_POST['subject']) && // tjek, at der er skrevet et subject
!empty($_POST['message']) && // tjek, at der er skrevet en besked

// her følger sikringen mod spambotter
!strpos($_POST['name'], "xx") && // tjek, at dit domæne ikke er skrevet i feltet "navn"
!strpos($_POST['email'], "xx") && // tjek, at dit domæne ikke er skrevet i feltet "email"
!strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn"
!eregi("\r",$_POST['name']) && // tjek, at der ikke er "vogn-retur" i "navn"
!eregi("\n",$_POST['name']) && // tjek, at der ikke er "linjeskift" i "navn"
!eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email"
!eregi("\n",$_POST['email'])) // tjek, at der ikke er "linjeskift" i "email"


// er alt ok, fortsættes med afsendelse af mailen
{
$headers="From: ".$_POST['email']."<".$_POST['email'].">";
$msg = stripslashes(strip_tags($_POST['message']))."\n\nAfsendt fra xx fra IP:".$_SERVER["REMOTE_ADDR"]."\n\n";

if (@$_POST['customer_copy'])
{
$headers .= "\r\nBcc: ".$_POST['email'];
}
if (@mail("xx", strip_tags($_POST['subject']),
$msg, $headers))
{
echo "<p>Tak for din henvendelse. Jeg svarer så hurtigt som muligt.</p>";
}
else
{
echo "<p>E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!</p>";
}
}
else
{
echo "<p>Mailen kunne ikke sendes, alle felter skal udfyldes korrekt!</p>";
}
}
?>

Når alle data indtastes korrekt, er det denne linie der gør sig gældende:
echo "<p>Tak for din henvendelse. Jeg svarer så hurtigt som muligt.</p>";

Jeg kan ikke bruge dette:
  header("Location: xxx.shtml");
da jeg så vil misse fejlbeskederne hvis indtastet data ikke er korrekt.

Hvad gør jeg?

Mvh
Boxer
Avatar billede jakobdo Ekspert
14. maj 2007 - 19:57 #1
Din kode er inde i en IF/ELSE, så hvis du erstatter linien:

echo "<p>Tak for din henvendelse. Jeg svarer så hurtigt som muligt.</p>";
med:
header('Location: alt_ok.html');
exit();
Så burde det virke, også selvom der skulle opstå fejl, da man derfor bliver på samme side.
Avatar billede boxer Praktikant
14. maj 2007 - 20:24 #2
Det bør virke og det virker!
Takker :o)

Smid et svar så du kan få point
Avatar billede jakobdo Ekspert
14. maj 2007 - 20:31 #3
Svar!
Avatar billede jakobdo Ekspert
14. maj 2007 - 20:41 #4
Takker for point.
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