Avatar billede dockreil Nybegynder
08. november 2005 - 15:26 Der er 8 kommentarer og
1 løsning

Formmail m. PHP og ikke-obligatoriske felter

Jeg har fulgt den ganske udmærkede guide til PHP-formmail på udvikleren.dk.
Men til den formmail jeg skal bruge, vil jeg gerne tilføje et par ting, den ser lige nu ud som følger:

1:
<?php

//Tjekker om brugeren kom fra index.htm

if(!isset($_POST['navn']))
{
header("Location: index.htm"); //Hvis brugeren ikke kom fra index.htm, sender vi ham derhen.
}

else
{ // Hvis brugeren kom fra index.htm, så fortsætter vi.

//Henter data fra formular
$navn = $_POST['navn'];
$mail = $_POST['mail'];
// $adr = $_POST['adr'];
// $post = $_POST['post'];
// $city = $_POST['city'];
// $tel = $_POST['tel'];
$besked = $_POST['besked'];

if(empty($navn) || empty($mail) || empty($besked))
{ //Hvis en af variablerne er tomme, kommer brugeren ikke videre.

echo "Du har glemt at udfylde et obligatorisk felt. <a href='index.htm' title='Klik her for at komme tilbage'>Klik her for at komme tilbage til formularen</a>";

}

else
{ //Hvis der var noget i alle variabler går vi videre til næste tjek.

if(ereg("^.+@.+\..+$", $mail)) { //Hvis brugerens e-mail er gyldig fortsætter vi.

//Nu skal vi til at sende e-mailen.
//Vi laver lige et par variabler mere
$sendto = &quot;rasmus@kreilgaard.com"; //Den adresse som mailen skal sendes til

//Vi laver en variabel, som indeholder alt det, som skal stå i mailen.
$msg = "Navn: ".$navn."\n";
$msg .= "E-mail: ".$mail."\n";
// $msg .= "Adresse: ".$adr."\n";
// $msg .= "Postnr./By: ".$post." ";
// $msg .= .$city."\n";
// $msg .= "Tlf.: ".$tel."\n\n";
$msg .= "Kunden ønsker at vide:\n\n".$besked."\n";

$subject = "Kundekontakt via hjemmesiden";

//Mailen afsendes
if(mail($sendto, $subject, $msg, "From: $mail\r\n" . "Reply-To: $mail\r\n"))
{echo "Mailen blev sendt uden problemer";



}
else
{
echo "Der opstod en fejl. Prøv igen. <a href='kontakt.htm' title='Klik her for at komme tilbage'>Klik her for at komme tilbage til formularen</a>";
}
}

else
{ //Hvis e-mail adressen ikke har et @ kommer vi med endnu en fejl

echo "Ugyldig e-mail adresse. <a href='index.htm' title='Klik her for at komme tilbage'>Klik her for at komme tilbage til formularen</a>";

}

}
}
?>

-selve formen er som den skal være, men hvordan for jeg følgende IKKE-OBLIGATORISKE felter med?

// $adr = $_POST['adr'];
// $post = $_POST['post'];
// $city = $_POST['city'];
// $tel = $_POST['tel'];

Jeg ved godt at /'erne skal fjernes, men hvad skal der stå i linien, hvor den tjekker at de andre felter ikke er tomme?

2: Når den så får sendt mailen, vil jeg gerne have den til at gå til en anden side, fremfor beskeden "Mailen blev sendt uden problemer" -hvordan?

-siden som formen integreres på kan ses her:

http://www.kreilgaard.com/formmail/

-og siden der skal vises, når mailen er sendt ligger i samme mappe, som recieved.htm

Jeg håber spørgsmålene er forstået, og at der er nogen der kan være behjælpelige hurtigst muligt. Jeg giver 150p. for første del og 50p. for anden del.

På forhånd tak.
/Rasmus ...PHP-newbie!
Avatar billede bromer Nybegynder
08. november 2005 - 15:36 #1
Så vidt jeg kan forstå vil du have at de andre variabler også er obligatoriske og at folk bliver sendt til recieved.htm. Det bør kunne gøres som:

<?php

//Tjekker om brugeren kom fra index.htm

if(!isset($_POST['navn']))
{
header("Location: index.htm"); //Hvis brugeren ikke kom fra index.htm, sender vi ham derhen.
}

else
{ // Hvis brugeren kom fra index.htm, så fortsætter vi.

//Henter data fra formular
$navn = $_POST['navn'];
$mail = $_POST['mail'];
$adr = $_POST['adr'];
$post = $_POST['post'];
$city = $_POST['city'];
$tel = $_POST['tel'];
$besked = $_POST['besked'];

if(empty($navn) || empty($mail) || empty($besked) || empty($adr)  || empty($post)  || empty($city)  || empty($tel))
{ //Hvis en af variablerne er tomme, kommer brugeren ikke videre.

echo "Du har glemt at udfylde et obligatorisk felt. <a href='index.htm' title='Klik her for at komme tilbage'>Klik her for at komme tilbage til formularen</a>";

}

else
{ //Hvis der var noget i alle variabler går vi videre til næste tjek.

if(ereg("^.+@.+\..+$", $mail)) { //Hvis brugerens e-mail er gyldig fortsætter vi.

//Nu skal vi til at sende e-mailen.
//Vi laver lige et par variabler mere
$sendto = &quot;rasmus@kreilgaard.com"; //Den adresse som mailen skal sendes til

//Vi laver en variabel, som indeholder alt det, som skal stå i mailen.
$msg = "Navn: ".$navn."\n";
$msg .= "E-mail: ".$mail."\n";
$msg .= "Adresse: ".$adr."\n";
$msg .= "Postnr./By: ".$post." ";
$msg .= .$city."\n";
$msg .= "Tlf.: ".$tel."\n\n";
$msg .= "Kunden ønsker at vide:\n\n".$besked."\n";

$subject = "Kundekontakt via hjemmesiden";

//Mailen afsendes
if(mail($sendto, $subject, $msg, "From: $mail\r\n" . "Reply-To: $mail\r\n"))
{
header("Location: recieved.htm");



}
else
{
echo "Der opstod en fejl. Prøv igen. <a href='kontakt.htm' title='Klik her for at komme tilbage'>Klik her for at komme tilbage til formularen</a>";
}
}

else
{ //Hvis e-mail adressen ikke har et @ kommer vi med endnu en fejl

echo "Ugyldig e-mail adresse. <a href='index.htm' title='Klik her for at komme tilbage'>Klik her for at komme tilbage til formularen</a>";

}

}
}
?>
Avatar billede dockreil Nybegynder
08. november 2005 - 15:52 #2
Ehm, ikke helt! De fire variabler ($adr = $_POST['adr']; $post = $_POST['post']; $city = $_POST['city']; $tel = $_POST['tel'];.) skal ikke være obligatoriske... Jeg har prøvet bare at fjerne /'erne, men så kommer jeg frem til en blank side, og mailen kommer ikke frem!

Vedr. header("Location: recieved.htm"); har jeg prøvet, men det kan jeg ikke få til at virke! -der kommer man bare frem til en fuldstændig blank side!?

Men ellers tak for det hurtige svar...
Avatar billede bromer Nybegynder
08. november 2005 - 15:57 #3
Et hurtigt svar er sgu ikke meget værd så :) Jeg ser lige på det
Avatar billede bromer Nybegynder
08. november 2005 - 16:08 #4
Følgende fik jeg til at virke på min server. Jeg blev sendt korrekt til recieved.htm og jeg fik mailen:

<?php

//Tjekker om brugeren kom fra index.htm

if(!isset($_POST['navn']))
{
header("Location: index.htm"); //Hvis brugeren ikke kom fra index.htm, sender vi ham derhen.
}

else
{ // Hvis brugeren kom fra index.htm, så fortsætter vi.

//Henter data fra formular
$navn = $_POST['navn'];
$mail = $_POST['mail'];
$adr = $_POST['adr'];
$post = $_POST['post'];
$city = $_POST['city'];
$tel = $_POST['tel'];
$besked = $_POST['besked'];

if(empty($navn) || empty($mail) || empty($besked))
{ //Hvis en af variablerne er tomme, kommer brugeren ikke videre.

echo "Du har glemt at udfylde et obligatorisk felt. <a href='index.htm' title='Klik her for at komme tilbage'>Klik her for at komme tilbage til formularen</a>";

}

else
{ //Hvis der var noget i alle variabler går vi videre til næste tjek.

if(ereg("^.+@.+\..+$", $mail)) { //Hvis brugerens e-mail er gyldig fortsætter vi.

//Nu skal vi til at sende e-mailen.
//Vi laver lige et par variabler mere
$sendto = "rasmus@kreilgaard.com"; //Den adresse som mailen skal sendes til

//Vi laver en variabel, som indeholder alt det, som skal stå i mailen.
$msg = "Navn: ".$navn."\n";
$msg .= "E-mail: ".$mail."\n";
$msg .= "Adresse: ".$adr."\n";
$msg .= "Postnr./By: ".$post." ";
$msg .= "By: " .$city."\n";
$msg .= "Tlf.: ".$tel."\n\n";
$msg .= "Kunden ønsker at vide:\n\n".$besked."\n";

$subject = "Kundekontakt via hjemmesiden";

//Mailen afsendes
if(mail($sendto, $subject, $msg, "From: $mail\r\n" . "Reply-To: $mail\r\n"))
{
header("Location: recieved.htm");



}
else
{
echo "Der opstod en fejl. Prøv igen. <a href='kontakt.htm' title='Klik her for at komme tilbage'>Klik her for at komme tilbage til formularen</a>";
}
}

else
{ //Hvis e-mail adressen ikke har et @ kommer vi med endnu en fejl

echo "Ugyldig e-mail adresse. <a href='index.htm' title='Klik her for at komme tilbage'>Klik her for at komme tilbage til formularen</a>";

}

}
}
?>

fejlen før lå i hvem den blev sendt til hvor der stod quot istedet for "
Avatar billede dockreil Nybegynder
08. november 2005 - 16:25 #5
Jaaah! -og d'oh... der stod nu " og ikke qout i mit script, men jeg kopierede alligevel dit over, og nu virker det!

Jeg ved ikke helt hvordan jeg skal skrive nede i selve <head> i scriptet, for at den kan linke til recieved.htm (håber du forstår hvad jeg mener!), så jeg har kopieret alt html-script fra recieved over i send.php, så jeg ender det rette sted!
-findes der en lettere måde?

Uanset hvad, er pointene dine, Bromer!
Avatar billede dockreil Nybegynder
08. november 2005 - 16:33 #6
Ehh... hvorfor bliver jeg bare sendt til toppen af siden når jeg trykker på accepter?

/Rasmus -Åbenlys newbie!
Avatar billede bromer Nybegynder
08. november 2005 - 17:07 #7
Jeg forst[r ikke helt hvad du mener. Du har kopiret noget over i send.php?

Og du trykker accepter! Er det din submit knap eller hvad?
Avatar billede dockreil Nybegynder
08. november 2005 - 17:24 #8
Accepter var her på siden... den ville ikke lade mig give dig point! ;-) Men det skulle være iorden nu.

Det andet har jeg fundet ud af!

Mange tak for hjælpen, Bromer, du har fået max karma af mig!
Avatar billede bromer Nybegynder
08. november 2005 - 17:32 #9
Jamen mange tak for det..
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