[PHP] Wie erstelle ich ein Kontaktformular?

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!
H

Html-Profi

Guest
Hi,

1:Einleitung

Hier schreibe ich nun mein erstes Tutorial. Da es im Forum immer wieder Fragen gibt, wie man ein Kontaktformular erstellt, das die Eingaben direkt an eine Email-Adresse schickt, habe ich gedacht ich poste hier mal eins!

2:Was wird alles benötigt?

Es wird Webspace benötigt (Im Notfall auch ein Freehoster;-)) !
Er muss aber die Funktion mail() von php unterstützen. Möglichkeiten von Freehostern:

Funktioniert bei:
-funpic
-pytal (Nach anfrage)

Funktionier nicht bei:
-kilu (mail-funktion deaktiviert)

3:Los gehts

So fangen wir an:

Zuerst braucht man ein ganz normales Formular in html geschrieben:

HTML:
<p><h1>Kontaktformular</h1></p>

<form action="" method="post">
<p> Ihr Name:<input type="text" name="von"></p>
<p>Ihre Email-Adresse:(Für Antwort):<input type="text" name="email"></p>
<p>Betreff:<input type="text" name="betreff"></p>
<p>Ihre Nachricht:<textarea name="nachricht" cols="50" rows="10">
</textarea></p>
<p><input type="submit" value="Absenden" name="fertig"></p>
</form>
Das wäre der Html Teil. Jetzt zum PHP-Teil:

Erstmal einleitend ein:
PHP:
<?php

Danach definieren wir zur Übersichtlichkeit die übergebenen Variablen:
PHP:
$von = $_POST['von'];
$email = $_POST['email'];
$betreff = $_POST['betreff'];
$nachricht = $_POST['nachricht'];
$fertig = $_POST['fertig'];

Danach bauen wir eine Funktion ein, die überprüft ob die eingegebene Email Adresse "richtig" ist:

PHP:
function checkEmail( $email )
{
    $nonascii      = "\x80-\xff";    
    $nqtext        = "[^\\\\$nonascii\015\012\"]";
    $qchar         = "\\\\[^$nonascii]";
    $normuser      = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';
    $quotedstring  = "\"(?:$nqtext|$qchar)+\"";
    $user_part     = "(?:$normuser|$quotedstring)";
    $dom_mainpart  = '[a-zA-Z0-9][a-zA-Z0-9._-]*\\.';
    $dom_subpart   = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*';
    $dom_tldpart   = '[a-zA-Z]{2,5}';
    $domain_part   = "$dom_subpart$dom_mainpart$dom_tldpart";
    $pattern       = "$user_part\@$domain_part";
    
    if (!preg_match( "/$pattern$/", $email ))
    {
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}

Jetzt kommt der Teil, der überprüft ob die Felder nicht leer sind, UND die Email verschickt:

PHP:
if(isset($fertig)){

  if ($von == "") {
   echo"<script type=\"text/javascript\"> alert(\"Sie haben ihren Namen nicht angegeben!\");</script>";
  } elseif ($email == "") {
    echo"<script type=\"text/javascript\"> alert(\"Sie haben ihre Email nicht angegeben!\");</script>";
  } elseif ($betreff == "") {
    echo"<script type=\"text/javascript\"> alert(\"Sie haben keinen Betreff angegeben!\");</script>";
  } elseif ($nachricht == "") {
    echo"<script type=\"text/javascript\"> alert(\"Sie haben keine Nachricht angegeben!\");</script>";	
  } elseif (!checkEmail( $_REQUEST['email'] )) {
    echo"<script type=\"text/javascript\"> alert(\"Die Email Adresse ist nicht gueltig!\");</script>";
  } else {
  
  


$datum = date("d.m.Y");
  $uhrzeit = date("H:i");
  $datum=$datum ."-". $uhrzeit ."Uhr";
  

	
	$ich = "HIER IHRE EMAIL EINTRAGEN";
  $betreffemail = "Kontaktformular";
  $text = "Sie haben eine Nachricht von:".$von."
  Seine Email Adresse lautet:".$email."
  Der Betreff lautet:".$betreff."
  Das Sendedatum:".$datum."
  Die Nachrich lautet:".$nachricht."
  
  
  
  ";
  mail($ich, $betreffemail, $text, 
  "From: Absender <Absenderemail>");
  echo"Mail verschickt <br>";
  
echo"<script type=\"text/javascript\"> alert(\"Die Nachricht wurde erfolgreich verschickt!\");</script>";		



}
}
?>

So.
Jetzt müsst ihr nur noch das Script untereinander(Reihenfolge wie ich gepostet habe) fügen und "HIER IHRE EMAIL EINTRAGEN" durch ihre Email-Adresse ersetzen! Das Script ist fertig! ;)



Viel Spaß und ich hoffe das Tut hat euch geholfen
PS: Das Renomee-System ist nicht umsonst;-)
 

freak131

Neues Mitglied
6 Juli 2006
1.164
8
0
ich will dies ja nicht kritisieren aber ich verstehe nicht warum du JS nutzt zum ausgeben der fehler (nach dem abschicken) zudem müsste man es komplett neu ausfüllen ... ?

zudem traust du einigen user eingaben recht blind, hab jedoch nur enben ein blick drüber geworfen.
 
Zuletzt bearbeitet:

bodyandsoul

Neues Mitglied
20 Juni 2007
103
1
0
Öhm also ich weiß nicht, will ja nichts sagen aber für tutorial ist das ein wenig ungenau, beschrieben!
Wenn ich jetzt ein PHP anfänger wäre und wissen wollte wie sowas geht tät ich mich da nicht zurecht finden sorry!
 
M

matibaski

Guest
Und was ist mit dem Spamschutz?

Ein Bot kann das ja locker ausfüllen.

Ein Captcha oder so ein kleiner Spamschutz wäre doch noch angebracht, oder?
 
H

Html-Profi

Guest
wenn du einen spamschutz brauchst dann google im internet! dieses tut ist nur ein einfaches kontaktformular
 

HTML-Meister

Mitglied
21 Februar 2008
171
0
16
Etwas ungenau beschrieben. Aber wenn man sich als Anfänger da mal hineingedacht hat, dann gehts schon. Alles, was nach meiner Ansicht fehlt, sind die Header. Das wäre sehr praktisch, wenn es Header gäbe!
 

flaircracks

Neues Mitglied
15 März 2009
1
0
0
Hallo

Ich bin noch ganz neu in der HTML Sache, und bin sehr dankbar über dein Kontaktformular. Es hat alles soweit geklappt, nur bekomme ich beim Test immer folgende Nachricht.

Method Not Allowed

The requested method POST is not allowed for the URL /tanznacht40/newsletter.html.

Apache/1.3.36 Server at Flaircracks | Home Port 80


was mache ich falsch?

Vielen Dank für deinen Hilfe

:grin:
 

Testimus

Neues Mitglied
17 Juli 2009
6
0
0
Bei mir klappt es super wenn ich eine neue Formular.php mit
dazugehörigem Header , body .... anlege.

Wenn ich jedoch in der Formular.php nur eine <div> anlege und den oben aufgeführten Teil hinein kopiere, bekomme ich ständig einen Fehler, dass das
$_Post array nicht gefüllt ist.
Ich möchte jedoch keine komplette "HTML Datei", weil ich meine <div> später im Content meiner Seite einbinden möchte.
Könnt Ihr mir sagen, warum das $_Post arrray nicht gefüllt ist?

(Falls meine Erklärung nicht verständlich war, poste ich im nächsten Beitrag gern einen Codeschnipsel. )

MfG
Testimus
 

Suu

Neues Mitglied
2 September 2009
1
0
0
Nochmal für Anfänger wie mich...

Danke für das Tutorium.

Hab ich das so richtig verstanden?

1) Den html-Code in die entsprechende html-Seite einfügen.
2) Eine neue Datei erstellen, die ganzen php-Schnipsel nacheinander einfügen. Dateinamen auf .php ändern.
3) die html und die php auf meinen Server hochladen, und fertig? :D
 

XraYSoLo

Senior HTML'ler
19 Juli 2005
6.035
26
48
im prinzip ja, nur du solltest anstatt einfachen kopierens alles nochmal durcharbeiten, um den sinn und die arbeitsweise zu versten.

Nils aka XraYSoLo
 

XraYSoLo

Senior HTML'ler
19 Juli 2005
6.035
26
48
kann auch nicht gehen, wenn du dem parser nicht sagst, dass es PHP ist (werkseinstellungen).

Nils aka XraYSoLo
 

smurf62

Neues Mitglied
25 Oktober 2012
2
0
0
Da ich fast NULL Plan habe: Was davon kommt in den head-Tag und was in den body-Tag?
Oder beides in head...?
 
Werbung:

Neueste Beiträge