yubb.de-Logo
Tutorials
yubb@yubb
yubbService
Inside yubb

Ein einfacher PHP-Formmailer

Ein einfacher PHP-Formmailer, ohne Beanspruchung einer fremden Site

In die erste Datei kommt das Formular. Nenne die Seite, wie du willst, z.B. contact.php.
Dieses Formular fängt mit
<form action="mailer.php" method="post"> an und endet mit </form>.

Vor dem </form> muss noch ein Submit Button eingefügt werden:
Code:
<input name="abschicken" type="submit" value="SENDEN">


Das fertige Formular könnte also so aussehen:

Code:
<form action="mailer.php" method="post">
<u>Dein Name</u>:
<input type="text" name="name">
<br>
<u>Mail Adresse</u>:
<input type="text" name="email">
<br>
<u>Betreff</u>:
<input type="text" name="mailbetreff">
<br>
<textarea name="mailnachricht" cols="45" rows="5"></textarea>
<br>
<br>
<input name="abschicken" type="submit" value="SEND">
</form>





Jetzt kommt die zweite Datei. Diese solltest du mailer.php nennen.
In dieser Datei wird die Mail verarbeitet und dann endgültig gesendet. Es wird auch überprüft, ob alle Felder ausgefüllt sind.

So sieht der Code aus (Erklärung im Text)

PHP-Datei:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
if($abschicken) {
    
// Wenn eines der Felder leer ist, gebe Fehlermeldung aus
    
if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['mailbetreff']) || empty($_POST['mailnachricht']))
    {
        echo 
"Bitte f&uuml;lle alle Felder aus!";
    } else {
    
// Ansonsten: Für jedes Eingabefeld eine Zeile wie folgt erzeugen --> Feldname: Eingabe
        
while(list($feld,$wert)=each($HTTP_POST_VARS)) {
            if(
$feld!="abschicken") {
                
$mailnachricht.=ucfirst($feld).": $wert\n";
            }
        }
        
// Zusatzdaten hinzufügen
        
$mailnachricht.="\nDatum/Zeit: ";
        
$mailnachricht.=date("d.m.Y H:i:s");
        
$mailbetreff="Kontakt: ";
        
$mailbetreff.=$HTTP_POST_VARS['email'];
        
// Mail versenden
        
mail("deine@email.net"$mailbetreff$mailnachricht"From: ".$_POST['email']);
        echo 
"Mail wurde erfolgreich versandt";
    }
} else {
    echo 
"ERROR. Ein Fehler ist aufgetreten.";
}
?>


Wenn du mehr Felder als name, email, mailbetreff und mailnachricht hast, kannst du diese auch hinzufügen. Wenn du z.B. ein Feld mit dem Namen "land" hinzufügen möchtest und dieses ein Pflichtfeld sein soll, son ändere die Zeile if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['mailbetreff']) || empty($_POST['mailnachricht'])) (Zeile 4) zu
PHP-Datei:
1
2
3
<?php
if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['mailbetreff']) || empty($_POST['mailnachricht']) || empty($_POST['land']))
?>
. So wird auch das Feld "land" überprüft, ob es ausgefüllt ist!
Natürlich kannst du deine Fehlermeldungen noch selbst definieren!
Statt deine@email.net (Zeile 20) schreibst du deine e-mail Adresse hin bzw. die e-mail Adresse, an die die Mail gesendet werden soll!
Das wärs... :-)

Den script könnt ihr unter http://www.fabian.at.tc unter "Kontakt" testen!

lg fabs



Weiterführende Links:
Alles für alle^^

Geschrieben von fabs am 11.08.2004 (15637x gelesen)
weiterempfehlen weiterempfehlen   Druckversion Druckversion   kommentieren kommentieren

Die Lösung für viele Probleme: Die Dateirechte in diesem Script müssen auf mindestens 755 stehen.
Geschrieben von Phil Marx
Erweitert man den Code in der Zeile 20 folgendermaßen:

mail("deine@email.net", $mailbetreff, $mailnachricht, "From: ".$_POST['email']."\n "MIME-Version: 1.0\nContent-type: text/html; charset=iso-8859-1");

so können HTML-Mails verschickt werden.
Geschrieben von Phil Marx