[PHP] Kontaktformular: Empfänger auswählen

Aaaah danke, jetzt hab ich verstanden. Hab nun alles in einer Datei, die Fehlermeldungen werden auf derselben Seite über dem Kontaktformular ausgegeben, das ist ja ganz gut, nur hätte ich für die Nachricht "Danke für deine Nachricht" gerne eine neue Seite, bzw. so, dass das Formular dann nicht mehr darunter erscheint :(
 
PHP:
 if ($Empfaenger == "Virginia") {
mail("virginia@vl-marienhof.de", "Neue Nachricht", $mail, "From:$email"); //Mail an Virginia
echo "Vielen Dank für deine Nachricht. Sie ist auf dem Weg zu Virginia und wird schnellstmöglich bearbeitet.";
die();
}else{
mail("manuel@vl-marienhof.de", "Neue Nachricht", $mail, "From:$email"); //Mail an Manuel
echo "Vielen Dank für deine Nachricht. Sie ist auf dem Weg zu Manuel und wird schnellstmöglich bearbeitet.";
die();
}

Mit die(); wird das PHP-Script beendet.

KoЯn
 
Wenn ich das mache, lässt er abe rnicht nur das Formular aus, sondern auch noch den ganzen Quellcode der noch darunter steht :(
 
Achso da kommt noch was. Sorry, aber das wusste ich nicht.
Da würde ich einfach schnell ne extra Variable anlegen.
Ganz am Anfang schreibst du: $mailGesendet = false;
Anstatt die(); schreibst du $mailGesendet = true;

Das ganze Formular kommt dann in eine if-Bedingung.
PHP:
<?php
if(!$mailGesendet) {
    // Code für das Formular
}

//der Rest
?>

KoЯn
 
Klappt super mit der Variable.

Nun soll der Benutzer noch die Möglichkeit bekommen, sich auszusuchen, ob er per Mail ne Kopie der Nachricht will. Im Formular sieht das bisher so aus:
<td colspan=2><input type="checkbox" name="checkbox" value="checkbox">
Ich m&ouml;chte eine Kopie meiner Nachricht per E-Mail erhalten. </td>
Dann hab ich ne neue Variable angelegt für die Mail an den User:
$kopiemail = "Hallo,\nDu hast soeben die folgende Nachricht verschickt:\n $Nachricht";
So, die Abfrage ob die Checkbox leer war oder nicht und was dann passieren soll, hab ich bisher so:
if ($checkbox == "on") {
mail("$email", "Kopie deiner Nachricht", $kopiemail, "From:automailer@website.de");}
Nur an welcher Stelle bau ich DAS jetzt ein???
 
Moin!

Here you are:

Ich hab mal nen ganzes Skript geschrieben :)

Dateiname kontakt.php

PHP:
<?php

if($_POST['sendmail'] == null)
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Kontaktformular</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form action="kontakt.php" method="post" name="email" id="email">
  <table width="400" border="0">
    <tr>
      <td width="74">An:</td>
      <td width="316"><select name="to" id="to">
          <option value="123-test@gmail.com">Empf&auml;nger 1</option>
          <option value="123-test@gmx.de">Empf&auml;nger 2</option>
        </select></td>
    </tr>
    <tr>
      <td>Von:</td>
      <td><input name="from" type="text" id="from"></td>
    </tr>
    <tr>
      <td>Name:</td>
      <td><input name="name" type="text" id="name"></td>
    </tr>
    <tr>
      <td>Betreff:</td>
      <td><input name="betreff" type="text" id="betreff"></td>
    </tr>
    <tr>
      <td>Mitteilung:</td>
      <td><textarea name="message" wrap="PHYSICAL" id="message"></textarea></td>
    </tr>
    <tr>
      <td>Kopie </td>
      <td>Ja
        <input type="radio" name="kopie" value="1">
        Nein
        <input type="radio" name="kopie" value="0"></td>
    </tr>
    <tr>
      <td><input name="sendmail" type="hidden" id="sendmail" value="1"> </td>
      <td><input type="submit" name="Submit" value="Weg Damit"></td>
    </tr>
  </table>
</form>
</body>
</html>
<?php
} else
{
$formerror = null;

$to = $_POST['to'];
$from = $_POST['from'];
$name = $_POST['name'];
$betreff = $_POST['betreff'];
$mitteilung = $_POST['message'];
$kopie = $_POST['kopie'];

if ($to == null) { $formerror .= "Sie haben keinen Empf&auml;nger  ausgew&auml;hlt!<br>"; }
if ($from == null) { $formerror .= "Sie haben keine Absenderadresse angegeben!<br>"; }
if ($name == null) { $formerror .= "Sie haben keinen Namen angegeben!<br>"; }
if ($betreff == null) { $formerror .= "Sie haben keinen Betreff angegeben!<br>"; }
if ($mitteilung == null) { $formerror .= "Sie haben keinen Mitteilung angegeben!<br>"; }

if($formerror == null)
{
 $header = "MIME-Version: 1.0\n";
 $header .= "Content-type: text/html; charset=iso-8859-1\n";
 $header .= "From: $name <$from>\n";
 
 $sendmail = mail($to,$betreff,$mitteilung,$header);
 
 if($kopie == true)
 {
  $kopie_betreff = "Kopie deiner Email";
  $header_kopie = "MIME-Version: 1.0\n";
  $header_kopie .= "Content-type: text/html; charset=iso-8859-1\n";
  $header_kopie .= "From: $name <$from>\n";
  $sendekopie = mail($from,$kopie_betreff,$mitteilung,$header_kopie);
 }

if($sendmail == true) { echo("Die Email wurde erfolgreich versandt!<br>"); }
if($kopie == true && $sendekopie == true) { echo("Es wurde eine Kopie der Email an deine Adresse versandt"); }
 


} else
{
 echo("$formerror");
}



}

?>

Kannst du auch hier ausprobieren www.merv.me.uk/kontakt.php
 
Ich hab jetzt anhand deines Formulars noch ne Variable error eingeführt und eingebaut, aber jetzt meldet er mir nen Parsing Fehler :(

<?php

if (isset ($_POST['abgeschickt'])) {

$Empfaenger = $_POST["Empfaenger"];
$email = $_POST["email"];
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"];
$website = $_POST["website"];
$nickname = $_POST["nickname"];
$Nachricht = $_POST["Nachricht"];
$mailGesendet = false;
$error = null;

//zurück-link
$referer = getenv("HTTP_REFERER");

// E-Mail an Team
$mail = "Name: $vorname $nachname\nE-Mail: $email\nNachricht: $Nachricht\n\n\nWebsite: $website\nNickname: $nickname";

// E-Mail Kopie an User
$kopiemail = "Hallo,\nDu hast soeben die folgende Nachricht verschickt:\n $Nachricht";

//Fehlermeldungen Text
$fehlermail = "Bitte gib eine gültige E-Mail-Adresse an.\n";
$fehlerfelder = "Du hast ein oder mehrere erforderliche Felder nicht ausgefüllt. Bitte korrigiere deine Angaben.\n"

//Fehlermeldung
if ($vorname == "" || $email == "" || $Nachricht == "") {
$error = error;
echo "$fehlerfelder";}

else {
if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $email))
{
if ($Empfaenger == "Virginia") {
mail("virginia@vl-marienhof.de", "Neue Nachricht", $mail, "From:$email"); //Mail an Virginia
echo "Vielen Dank für deine Nachricht.\nSie ist auf dem Weg zu Virginia und wird schnellstm&ouml;glich bearbeitet.";
$mailGesendet = true;
$error = null; }
if {$Empfaenger == "Manuel") {
mail("manuel@vl-marienhof.de", "Neue Nachricht", $mail, "From:$email"); //Mail an Manuel
echo "Vielen Dank für deine Nachricht.\nSie ist auf dem Weg zu Manuel und wird schnellstm&ouml;glich bearbeitet.";
$mailGesendet = true;
$error = null; }
else { $error = error;
echo "$fehlermail";}
}

if ($error == null) {
if ($checkbox == "on") {
mail("$email", "Kopie deiner Nachricht", $kopiemail, "From:automailer@website.de");}
}

}
if(!$mailGesendet) { //Formular nur anzeigen, wenn noch keine Mail gesendet ?>

// hier kommt das Formular
 
PHP:
 <?php

if (isset ($_POST['abgeschickt'])) {

$Empfaenger = $_POST["Empfaenger"];
$email = $_POST["email"];
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"];
$website = $_POST["website"];
$nickname = $_POST["nickname"];
$Nachricht = $_POST["Nachricht"];
$mailGesendet = false;
$error = null;

//zurück-link
$referer = getenv("HTTP_REFERER");

// E-Mail an Team
$mail = "Name: $vorname $nachname\nE-Mail: $email\nNachricht: $Nachricht\n\n\nWebsite: $website\nNickname: $nickname";

// E-Mail Kopie an User
$kopiemail = "Hallo,\nDu hast soeben die folgende Nachricht verschickt:\n $Nachricht";

//Fehlermeldungen Text
$fehlermail = "Bitte gib eine gültige E-Mail-Adresse an.\n";
$fehlerfelder = "Du hast ein oder mehrere erforderliche Felder nicht ausgefüllt. Bitte korrigiere deine Angaben.\n";

//Fehlermeldung
if ($vorname == "" || $email == "" || $Nachricht == "")
{
$error = "error";
echo "$fehlerfelder";
}

else {
if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $email))
{
if ($Empfaenger == "Virginia") {
mail("virginia@vl-marienhof.de", "Neue Nachricht", $mail, "From:$email"); //Mail an Virginia
echo "Vielen Dank für deine Nachricht.\nSie ist auf dem Weg zu Virginia und wird schnellstm&ouml;glich bearbeitet.";
$mailGesendet = true;
$error = null; }
if ($Empfaenger == "Manuel") {
mail("manuel@vl-marienhof.de", "Neue Nachricht", $mail, "From:$email"); //Mail an Manuel
echo "Vielen Dank für deine Nachricht.\nSie ist auf dem Weg zu Manuel und wird schnellstm&ouml;glich bearbeitet.";
$mailGesendet = true;
$error = null; }
else { $error = error;
echo "$fehlermail";} }


if ($error == null) {
if ($checkbox == "on") {
mail("$email", "Kopie deiner Nachricht", $kopiemail, "From:automailer@website.de");}
}

}
if(!$mailGesendet) {}} //Formular nur anzeigen, wenn noch keine Mail gesendet ?>
 
Du hast die Anführungsstriche vergessen:
Falsch: $error = error;
Richtig: $error = "error";
Ich würde aber der Variable $error entweder den Wert true oder false zuweisen. if($error) kannst du dann ganz einfach schreiben, anstatt if($error==NULL).
Des weiteren würde ich folgendes machen:
PHP:
if (trim($_POST['vorname']) == "" || trim($_POST['email']) == "" || trim($_POST['Nachricht']) == "")
Die Funktion trim entfernt alle nicht sichtbaren Zeichen (Leerzeichen, Returns) vom Anfang und vom Ende des Strings. So kannst du auch überprüfen, ob ein User nur Leerzeichen getippt hat.

KoЯn
 
Zuletzt bearbeitet:
PHP:
$fehlerfelder = "Du hast ein oder mehrere erforderliche Felder nicht ausgefüllt. Bitte korrigiere deine Angaben.\n"

Hier fehlt ein Semikolon. :)
 
Sorry,

hab vergessen zu erwähnen, dass ein ";" gefehlt hat und du an einer Stelle statt "(" "{" stehen hattest. Funzt es denn nu?
 
Nein. Angeblich hab ich in der letzten Zeile der DATEI einen Fehler. So sieht der Code jetzt aus:
PHP:
		<?php

if (isset ($_POST['abgeschickt'])) { 

$Empfaenger = $_POST["Empfaenger"];
$email = $_POST["email"]; 
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"]; 
$website = $_POST["website"];
$nickname = $_POST["nickname"]; 
$Nachricht = $_POST["Nachricht"];
$mailGesendet = false;
$error = false;

//zurück-link
$referer = getenv("HTTP_REFERER");

// E-Mail an Team
$mail = "Name: $vorname $nachname\nE-Mail: $email\nNachricht: $Nachricht\n\n\nWebsite: $website\nNickname: $nickname";

// E-Mail Kopie an User
$kopiemail = "Hallo,\nDu hast soeben die folgende Nachricht verschickt:\n $Nachricht";

//Fehlermeldungen Text
$fehlermail = "Bitte gib eine gültige E-Mail-Adresse an.\n";
$fehlerfelder = "Du hast ein oder mehrere erforderliche Felder nicht ausgefüllt. Bitte korrigiere deine Angaben.\n";

//Fehlermeldung
if ($vorname == "" || $email == "" || $Nachricht == "") {
  $error = true; 
  echo "$fehlerfelder";}

else {
	if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $email))
				{
				if ($Empfaenger == "Virginia") {
					mail("virginia@vl-marienhof.de", "Neue Nachricht", $mail, "From:$email"); //Mail an Virginia
					echo "Vielen Dank für deine Nachricht.\nSie ist auf dem Weg zu Virginia und wird schnellstm&ouml;glich bearbeitet.";
					$mailGesendet = true;
					$error = false; }
				if ($Empfaenger == "Manuel") {
					mail("manuel@vl-marienhof.de", "Neue Nachricht", $mail, "From:$email"); //Mail an Manuel
					echo "Vielen Dank für deine Nachricht.\nSie ist auf dem Weg zu Manuel und wird schnellstm&ouml;glich bearbeitet.";
					$mailGesendet = true; 
					$error = false; }		
	else {  $error = true;
			echo "$fehlermail";}
} 

if ($error) {
		if ($checkbox == "on") {
		mail("$email", "Kopie deiner Nachricht", $kopiemail, "From:automailer@website.de");} 
}

}
if(!$mailGesendet) { //Formular nur anzeigen, wenn noch keine Mail gesendet ?> 

// hier kommt das Formular 

<?php } ?>
 
Zuletzt bearbeitet von einem Moderator: ([QUOTE] zu [PHP])
Da scheint noch eine schließende Klammer "}" zu fehlen, nämlich die, die

if (isset ($_POST['abgeschickt'])) {

wieder schließt...
 
Hmm. Mach mal eine vor

if ($error)


...

/edit

Nein, die wars auch nicht. So sollte es gehen:

PHP:
else {
	if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$", $email)) {
		if ($Empfaenger == "Virginia") {
			mail("virginia@vl-marienhof.de", "Neue Nachricht", $mail, "From:$email"); //Mail an Virginia
			echo "Vielen Dank für deine Nachricht.\nSie ist auf dem Weg zu Virginia und wird schnellstm&ouml;glich bearbeitet.";
			$mailGesendet = true;
			$error = false; 
		}
        if ($Empfaenger == "Manuel") {
			mail("manuel@vl-marienhof.de", "Neue Nachricht", $mail, "From:$email"); //Mail an Manuel
			echo "Vielen Dank für deine Nachricht.\nSie ist auf dem Weg zu Manuel und wird schnellstm&ouml;glich bearbeitet.";
			$mailGesendet = true; 
			$error = false; 
		}
	}
	else {  
		$error = true;
		echo "$fehlermail";
	}
}

Die Klammer vor
else {
$error = true;

hab ich hier ergänzt.
 
Zuletzt bearbeitet:
Danke, geht ^^ Ist übrigens total lieb, dass Ihr euch alle so Mühe mit mir gebt :)
Problem nur noch: er sendet die Kopie an den User nicht. Kann es sein dass er das checkbox == "on" nicht versteht?
 
Hallo,

wie kommst du denn auf die Variable "ckeckbox"? ;)
Soweit ich sehe ist diese nirgends definiert.
An dessen Stelle sollte es mit "$_POST["kopie"] == 1" klappen.
Abgesehen davon sollte diese Mail auch sinnvollerweise ja auch nur dann gesendet werden, wenn die Angaben korrekt waren. ;)
Setzte aus diesem Grund diesen Code am besten auch zu den anderen Mail-Funktionen.

MfG mh1001

 
Zuletzt bearbeitet:
Zurück
Oben