• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung

[PHP] Kontaktformular: Bestätigungsmail

peha24

Tokyo Rose
Registriert
01.07.09
Beiträge
71
Hallo
Ich habe aus verschiedenen Kontaktformularen das unten stehende "zusammengeschustert". Eigentlich sollte es so sein, dass eine Fehlermeldung erscheint, wenn etwas nicht eingegeben wurde. Nun erscheint jedoch zusätzlich der Vermerk "Ihre Nachricht: Ihre Auswahl: Eine Bestätigungs-eMail von uns ist bereits unterwegs!". Dieser sollte jedoch nur erscheinen, wenn das Mail wirklich verschickt wurde ...
Was muss ich ändern?
Danke für eure Hilfe!
p.

<html>
<head>
<title>Logo-Wettbewerb</title>
<meta name="author" content="b-projects.de">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859- 1">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div align="left">
<br><br>
<?php
include "config.php";

// wurde auf ABSCHICKEN geklickt?
if(isset($_POST["submit"]))
{

// es wurde kein Name eingetragen
if(!$_POST["name"] || empty($_POST["name"])) { ?>
<div align="left"><span class="mail">Sie haben folgende Angabe vergessen einzutragen: Name</span><br>&nbsp;<a href="<?php echo $_SERVER["PHP_SELF"]; ?>" title="zur&uuml;ck">zur&uuml;ck</a></div>
<?php }

// es wurde keine E-Mail Adresse eingetragen
elseif(!$_POST["email"] || empty($_POST["email"])) { ?>
<div align="left"><span class="mail">Sie haben folgende Angabe vergessen einzutragen: eMail-Adresse</span><br>&nbsp;<a href="<?php echo $_SERVER["PHP_SELF"]; ?>" title="zur&uuml;ck">zur&uuml;ck</a></div>
<?php }

// es wurde keine Nachricht eingetragen
elseif(!$_POST["nachricht"] || empty($_POST["nachricht"])) { ?>
<div align="left"><span class="mail">Sie haben folgende Angabe vergessen einzutragen: Nachricht</span><br>&nbsp;<a href="<?php echo $_SERVER["PHP_SELF"]; ?>" title="zur&uuml;ck">zur&uuml;ck</a></div>
<?php }

// es wurde keine Auswahl angewählt
elseif(!$_POST["auswahl"] || empty($_POST["auswahl"])) { ?>
<div align="left"><span class="mail">Sie haben folgende Angabe vergessen einzutragen: Auswahl</span><br>&nbsp;<a href="<?php echo $_SERVER["PHP_SELF"]; ?>" title="zur&uuml;ck">zur&uuml;ck</a></div>
<?php }

// ist alles Eingetragen dann
else
{


// Erzeuge den E-Mail Header

// E-Mail Absender
$header.="From: \"".$_POST["name"]."\" <".$_POST["email"].">\n";

// Domain also was in der Mailadresse hinter dem @ steht
$header.="Organization: ".substr($deinemailadresse,strpos($deinemailadresse,"@"))."\n";
// Format der Mail
$header.="Content-Type: text/plain;\n";
// Name des Mailprogramms, hier die PHP-Version
$header.="X-Mailer: PHP/".phpversion();

// Der Betreff
$betreff = "".$_POST["auswahl"]."\n\n";

// Die Nachricht
$nachricht1 = "".$_POST["nachricht"]."\n\n";

// Die Auswahl
$auswahl1 = "".$_POST["auswahl"]."\n\n";

// Mail wird nun verschickt
mail("\"".$deinname."\" <".$deinemailadresse.">",$betreff,"Nachricht: ".$nachricht1."\nAuswahl: ".$auswahl1."", $header);

// Betreff der Dankesmail
$betreff_danke = "Vielen Dank";

// Text der Dankesmail
$body_danke = "Hallo ".$_POST["name"].",\n\nDanke f&uuml;r Ihre Nachricht!\n\nIhre Stimme wurde gez&auml;hlt.\n\n\nMit freundlichen Gruessen\n\n".$deinname."\n\n--\n\nIhre Nachricht:\n\n".$nachricht1."\n--\nIhre Auswahl:\n\n".$auswahl1."";

// Header f¸r die Dankesmail, analog zu oben
$header_danke.="\"".$deinname."\" <".$deinemailadresse.">";
$header_danke.="Organization: ".substr($deinemailadresse,strpos($deinemailadresse,"@"))."\n";
$header_danke.="Content-Type: text/plain;\n";
$header_danke.="X-Mailer: PHP/".phpversion();

// Senden der Dankmail
mail("\"".$_POST["name"]."\" <".$_POST["email"].">",$betreff_danke,$body_danke,$header_danke);
?>

<table border="0"><tr><td colspan="2" align="left">
<span class="mail">Vielen Dank f&uuml;r folgende Nachricht</span></td></tr>
<tr><td colspan="2" align="center">&nbsp;</td></tr>
<tr><td><span class="mail">Ihr Name:</span></td><td><?php echo $_POST["name"]; ?></td></tr>
<tr><td><span class="mail">Ihre eMail-Adresse:</span></td><td><a href="mailto:<?php echo $_POST["email"]; ?>"><?php echo $_POST["email"]; ?></a></td></tr>

<?php } ?>
<tr><td valign="top"><span class="mail">Ihre Nachricht:</b></td><td><?php echo nl2br($_POST["nachricht"]); ?></td></tr><tr>
<tr><td valign="top"><span class="mail">Ihre Auswahl:</b></td><td><?php echo nl2br($_POST["auswahl"]); ?></td></tr><tr>
<tr><td colspan="2" align="center">&nbsp;</td></tr>
<td colspan="2" align="center"><span class="mail">Eine Best&auml;tigungs-eMail von uns ist bereits unterwegs!</span></td></tr></table>
<?php
} // end alles eingetragen

// wenn nicht gesendet, Mailformular ausgeben
else
{
?>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<table border="0" cellspacing="0" cellpadding="5">
<tr>
<td>Ihr Name:</td>
<td><input type="text" name="name" class="formular"></td>
</tr>
<tr>
<td>Betreff:</td>
<td><input type="text" name="betreff" class="formular"></td>
</tr>
<tr>
<td>Ihre eMail-Adresse</td>
<td><input type="text" name="email" class="formular"></td>
</tr>

<tr>
<td valign="top">Ihre Nachricht:</td>
<td><textarea name="nachricht" cols="50" rows="5" class="feld"></textarea></td>
</tr>
<tr>
<td>Auswahl: </td>
<td>Logo 1:<input type="radio" value="Logo 1" name="auswahl"><br />
Logo 2:<input type="radio" value="Logo 2" name="auswahl"><br />
Logo 3:<input type="radio" value="Logo 3" name="auswahl"><br />
Logo 4:<input type="radio" value="Logo 4" name="auswahl"><br />
Logo 5:<input type="radio" value="Logo 5" name="auswahl"><br />
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td align="left"><input type="reset" value="zur¸cksetzen" class="formular">&nbsp;<input type="submit" value="abschicken" name="submit" class="formular"></td>
</tr>
</table>
</form>
<!-- end nicht gesendet -->
<?php } ?>
</div>
</body>


</html>
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Poste das mal mit dem CODE-Tag, so kann man das ja kaum lesen.
 

seaker

Empire
Registriert
19.04.10
Beiträge
88
Dem schliesse ich mich an.

Wenn ich das richtig erkannt habe, dann ist deine Abfrage oben "if(isset($_POST["submit"])) ... Abfragen über die Felder und eingaben" else "versand von email".

D.h die eMail wird abgeschickt wenn der Button nicht gesetzt ist und ignoriert damit die ganzen abfragen. Das wundert mich. Kann aber auch sein, dass ich eine Klammer übersehen habe, da der Code nicht wirklich übersichtlich ist.
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Bei dem Code wird einem ja übelst...

Vor "// ist alles Eingetragen dann" fehlt noch ein }

Für die Zukunft: Besser Code von Darstellung trennen, mit Einrückung arbeiten und auf Inline-PHP verzichten. Auch Frameworks bieten sich an (z.B. flourishlib), um generische Probleme einfach zu lösen.
 

drp

Jerseymac
Registriert
12.04.11
Beiträge
458
Das ganze könntest du so lösen:
Code:
if(mail(...)) {
// Erfolg
}
else {
// Fehler
}
(Wenn die E-Mail versendet wurde wird das, wo jetzt "// Erfolg" steht ausgeführt und sonst den Else-bereich...

Hoffe ich konnte weiterhelfen..