Aaron3219
Senior HTML'ler
Ich sehe ungefähr 3 Mal pro Tag die Frage nach einem PHP-Formmailer. Deswegen hier die Info wie es geht.
Was ist wichtig für HTML?:
Du fängst ja immer an mit einem <form> Tag an, gefolgt von einem <input> Tag.
Nun der erste wichtig Teil:
Der input MUSS einen name="" und eine id="" haben.
Beispiel:
required fügst du ein, wenn man das Feld ausfüllen MUSS (spart dir java-script).
Beispiel:
Wenn du willst kannst du deine Eingabefelder mit CSS verschönern.
Nun zum wichtigen Teil. Dem PHP. Ich poste dir jetzt einen kompletten Code. Aber ich würde mir wünschen, dass du es in meiner folgenden Erklärung verstehst. Hier der PHP-Code:
So wir fangen oben an.
Du siehst schon, warum wir die IDs aus dem html code brauchen.
Denn wir legen ja einen Wert für $irgendwas fest (das irgendwas muss nicht die ID aus dem html sein)
nun ziehen wir uns die ID aus dem html-code, indem wir Array $_POST['HTML-ID'] anwenden:
das machen wir nun für jede ID in unserem Form.
Dir müsste aufgefallen sein, dass wir nicht nur dir IDs aus dem HTML als $... stehen haben.
Wir haben nun noch 2 weitere $... stehen.
das $to habe ich als beispiel für den Empfänger des Forms genommen. Du kannst es aber beliebig nennen.
Also geben wir $to direkt einen festen Wert. Nämlich deine E-Mail.
$Subject habe ich als Betreff genommen. Diesen Wert kannst du auch umbenennen.
WICHTIG:
$Subject hat in diesem Beispiel einen festen Wert. Du kannst ihn allerdings auch nicht fest machen, sondern das $Subject wieder durch eine ID im html Code eingeben lassen:
Nächster Teil:
Als erstes gucken wir uns die $urlDankeSeite an:
Es ist ein fest angelegter Wert, auf den der Nutzer nach dem klicken des Submit-buttons weitergeleitet wird.
WICHTIG:
Das kann auch in html geschrieben werden. Also zum Beispiel:
Der $body ='' ist, was in deiner E-Mail die DU bekommst drin steht.
Also in deiner E-Mail die du bekommst, steht dann die Eingabe des input-felds mit der ID:
name, email, message (im HTML Code).
Wenn du das $Subject auch haben willst, einfach den Code ergänzen:
Man fügt eine Variable in einer Variable folgendermaßen hinzu:
Also ganz normal $irgendwas='';
Dann fügt man in die Klammern
'.$blabla.' ein un fertig.
Nächster Teil:
Hier werden einfache Header gesetzt, um dem MUA (mail user agent, z.B. ein E-Mail-Programm) die From- und die Reply-To-Adressen mitzuteilen. (+die utf=8 encodierung) Der Teil ist wichtig! Ansonsten funktioniert es nicht.
Nächster und letzter Teil:
So nun die nächste Variable. $send kann auch umbenannt werden.
Aber der wichtige Teil ist mail();
mail steht im PHP für das senden einer e-mail.
Kann also auch nicht anders heißen.
In die Klammer von mail schreibst du nun rein, welche Variablen geschickt werden sollen.
Wir wollen den Empfänger ($to), den Betreff ($subject), den Körper der E-Mail ($body) und die $headers.
also die if und else Befehle sagen nur, dass wenn $send ausgeführt wurde, soll er auf die $urlDankeSeite weitergeleitet werden.
WICHTIG: die (); kann nicht geändert werden, da 'die' ein fester Befehl steht für:
Druckt eine Nachricht und verlässt das aktuelle Skript.
Also if ($send) ist ausgeführt, dann {die($urlDankeSeite};
Wenn nicht (else), dann {echo'Ein Fehler ist aufgetreten!';}
am ende das exit; nicht vergessen.
Was ist wichtig für HTML?:
Du fängst ja immer an mit einem <form> Tag an, gefolgt von einem <input> Tag.
Nun der erste wichtig Teil:
Der input MUSS einen name="" und eine id="" haben.
Beispiel:
HTML:
<input type="text" name="name" style="float: right" id="name" required/>
Beispiel:
HTML:
<form autocomplete="on" name="Formular" method="post" action="./assets/formular.php">
<input type="text" name="name" style="float: right" id="name" required/>
<input type="text" name="email" style="float: right" id="email" required/>
<input type="text" name="betreff" style="float: right" id="betreff" required/>
<textarea name="message" style="float: right; height: 100%;" id="message" rows="6" required></textarea>
<input type="submit" value="Senden" style="float: right; margin-left: 60%; margin-top: 30px;">
</form>
Nun zum wichtigen Teil. Dem PHP. Ich poste dir jetzt einen kompletten Code. Aber ich würde mir wünschen, dass du es in meiner folgenden Erklärung verstehst. Hier der PHP-Code:
PHP:
<?php
{
$name = $_POST['name'];
$email = $_POST['email'];
$to = 'deine@e-mail.de';
$subject = "Support-Anfrage";
$message = $_POST['message'];
$betreff = $_POST['betreff'];
$urlDankeSeite = 'HIER KOMMT DEIN CODE IN HTML REIN, auf welche der Nutzer nach dem klicken geleitet wird';
$body = '
<b>Name:</b> '.$name.'<br>
<b>E-Mail:</b> '.$email.'<br><br>
<b>Nachricht:</b> '.$message.'<br></a>
';
$headers = "From: ".$name." <".$email.">\r\n";
$headers .= "Reply-To: ".$email."\r\n";
$headers .= "Content-type: text/html; charset=utf-8";
$send = mail($to, $subject, $body, $headers);
if ($send) {
die($urlDankeSeite);
}
else {
echo 'Ein Fehler ist aufgetreten!';
}
exit;
}
?>
So wir fangen oben an.
PHP:
$name = $_POST['name'];
$email = $_POST['email'];
$to = 'deine@e-mail.de';
$subject = "Support-Anfrage";
$message = $_POST['message'];
$betreff = $_POST['betreff'];
$unternehmen = $_POST['unternehmen'];
Du siehst schon, warum wir die IDs aus dem html code brauchen.
Denn wir legen ja einen Wert für $irgendwas fest (das irgendwas muss nicht die ID aus dem html sein)
PHP:
$irgendwas = ...
PHP:
$irgendwas = $POST_['name']
das machen wir nun für jede ID in unserem Form.
PHP:
$name = $_POST['name'];
$email = $_POST['email'];
$to = 'deine@e-mail.de';
$subject = "Support-Anfrage";
$message = $_POST['message'];
$betreff = $_POST['betreff'];
Dir müsste aufgefallen sein, dass wir nicht nur dir IDs aus dem HTML als $... stehen haben.
Wir haben nun noch 2 weitere $... stehen.
PHP:
$to = 'deine@e-mail.de';
$subject = "Support-Anfrage";
Also geben wir $to direkt einen festen Wert. Nämlich deine E-Mail.
$Subject habe ich als Betreff genommen. Diesen Wert kannst du auch umbenennen.
WICHTIG:
$Subject hat in diesem Beispiel einen festen Wert. Du kannst ihn allerdings auch nicht fest machen, sondern das $Subject wieder durch eine ID im html Code eingeben lassen:
HTML:
<input type="text" name="subject" style="float: right" id="subject" required/>
PHP:
$subject = $_POST['subject'];
Nächster Teil:
PHP:
$urlDankeSeite = 'HIER KOMMT DEIN CODE IN HTML REIN, auf welche der Nutzer nach dem klicken geleitet wird';
$body = '
<b>Name:</b> '.$name.'<br>
<b>E-Mail:</b> '.$email.'<br><br>
<b>Nachricht:</b> '.$message.'<br>
';
Es ist ein fest angelegter Wert, auf den der Nutzer nach dem klicken des Submit-buttons weitergeleitet wird.
WICHTIG:
Das kann auch in html geschrieben werden. Also zum Beispiel:
PHP:
$urlDankeSeite = '
<html>
<body>
Das ist die Seite
</body>
</html>
';
Der $body ='' ist, was in deiner E-Mail die DU bekommst drin steht.
PHP:
$body = '
<b>Name:</b> '.$name.'<br>
<b>E-Mail:</b> '.$email.'<br><br>
<b>Nachricht:</b> '.$message.'<br>
';
name, email, message (im HTML Code).
Wenn du das $Subject auch haben willst, einfach den Code ergänzen:
PHP:
$body = '
<b>Name:</b> '.$name.'<br>
<b>E-Mail:</b> '.$email.'<br><br>
<b>Nachricht:</b> '.$message.'<br>
<b>Betreff:</b> '.$Subject.'<br>
';
PHP:
$irgendwas ='
'.$blabla.'
';
Dann fügt man in die Klammern
'.$blabla.' ein un fertig.
Nächster Teil:
PHP:
$headers = "From: ".$name." <".$email.">\r\n";
$headers .= "Reply-To: ".$email."\r\n";
$headers .= "Content-type: text/html; charset=utf-8";
Nächster und letzter Teil:
PHP:
$send = mail($to, $subject, $body, $headers);
if ($send) {
die($urlDankeSeite);
}
else {
echo 'Ein Fehler ist aufgetreten!';
}
exit;
}
Aber der wichtige Teil ist mail();
mail steht im PHP für das senden einer e-mail.
Kann also auch nicht anders heißen.
In die Klammer von mail schreibst du nun rein, welche Variablen geschickt werden sollen.
Wir wollen den Empfänger ($to), den Betreff ($subject), den Körper der E-Mail ($body) und die $headers.
PHP:
if ($send) {
die($urlDankeSeite);
}
else {
echo 'Ein Fehler ist aufgetreten!';
}
exit;
also die if und else Befehle sagen nur, dass wenn $send ausgeführt wurde, soll er auf die $urlDankeSeite weitergeleitet werden.
WICHTIG: die (); kann nicht geändert werden, da 'die' ein fester Befehl steht für:
Druckt eine Nachricht und verlässt das aktuelle Skript.
Also if ($send) ist ausgeführt, dann {die($urlDankeSeite};
Wenn nicht (else), dann {echo'Ein Fehler ist aufgetreten!';}
am ende das exit; nicht vergessen.