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

[PHP] Wie erstelle ich ein Kontaktformular?

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
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
Ö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?
 

Icy

Neues Mitglied
Erstmal danke fürs Tut.

Eine Frage: Leute, die JS nicht aktiviert haben, können das Formular ja auf der JS-Fehleranzeige nicht richtig nutzen. GIbt es da nicht evtl Möglichkeiten ohne JS?

MfG Icy
 
H

Html-Profi

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

HTML-Meister

Mitglied
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
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
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
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
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
kann auch nicht gehen, wenn du dem parser nicht sagst, dass es PHP ist (werkseinstellungen).

Nils aka XraYSoLo
 
Werbung:

Neueste Beiträge

Oben