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 
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
[PHP] Kontaktformular: Empfänger auswählen
- Ersteller Virginia
- Erstellt am
Quidoff
Lieutenant
- Registriert
- Feb. 2005
- Beiträge
- 897
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
Quidoff
Lieutenant
- Registriert
- Feb. 2005
- Beiträge
- 897
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.
KoЯn
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:
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:
Dann hab ich ne neue Variable angelegt für die Mail an den User:<td colspan=2><input type="checkbox" name="checkbox" value="checkbox">
Ich möchte eine Kopie meiner Nachricht per E-Mail erhalten. </td>
So, die Abfrage ob die Checkbox leer war oder nicht und was dann passieren soll, hab ich bisher so:$kopiemail = "Hallo,\nDu hast soeben die folgende Nachricht verschickt:\n $Nachricht";
Nur an welcher Stelle bau ich DAS jetzt ein???if ($checkbox == "on") {
mail("$email", "Kopie deiner Nachricht", $kopiemail, "From:automailer@website.de");}
gimmebytes
Lt. Commander
- Registriert
- Juni 2002
- Beiträge
- 1.600
Moin!
Here you are:
Ich hab mal nen ganzes Skript geschrieben
Dateiname kontakt.php
Kannst du auch hier ausprobieren www.merv.me.uk/kontakt.php
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änger 1</option>
<option value="123-test@gmx.de">Empfä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änger ausgewä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ö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ö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
gimmebytes
Lt. Commander
- Registriert
- Juni 2002
- Beiträge
- 1.600
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ö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ö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 ?>
Quidoff
Lieutenant
- Registriert
- Feb. 2005
- Beiträge
- 897
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:
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
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']) == "")
KoЯn
Zuletzt bearbeitet:
- Registriert
- Sep. 2001
- Beiträge
- 8.252
PHP:
$fehlerfelder = "Du hast ein oder mehrere erforderliche Felder nicht ausgefüllt. Bitte korrigiere deine Angaben.\n"
Hier fehlt ein Semikolon.
gimmebytes
Lt. Commander
- Registriert
- Juni 2002
- Beiträge
- 1.600
Sorry,
hab vergessen zu erwähnen, dass ein ";" gefehlt hat und du an einer Stelle statt "(" "{" stehen hattest. Funzt es denn nu?
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ö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ö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])
- Registriert
- Sep. 2001
- Beiträge
- 8.252
Da scheint noch eine schließende Klammer "}" zu fehlen, nämlich die, die
if (isset ($_POST['abgeschickt'])) {
wieder schließt...
if (isset ($_POST['abgeschickt'])) {
wieder schließt...
- Registriert
- Sep. 2001
- Beiträge
- 8.252
Nein, die schließt das
else {
if (ereg...
else {
if (ereg...
- Registriert
- Sep. 2001
- Beiträge
- 8.252
Hmm. Mach mal eine vor
if ($error)
...
/edit
Nein, die wars auch nicht. So sollte es gehen:
Die Klammer vor
else {
$error = true;
hab ich hier ergänzt.
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ö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öglich bearbeitet.";
$mailGesendet = true;
$error = false;
}
}
else {
$error = true;
echo "$fehlermail";
}
}
Die Klammer vor
else {
$error = true;
hab ich hier ergänzt.
Zuletzt bearbeitet:
mh1001
Lt. Commander
- Registriert
- Nov. 2003
- Beiträge
- 2.039
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
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:
Ähnliche Themen
- Antworten
- 11
- Aufrufe
- 3.466
- Antworten
- 5
- Aufrufe
- 1.708
- Antworten
- 3
- Aufrufe
- 3.240
- Antworten
- 6
- Aufrufe
- 1.326