Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Lösungen für den Alltag
  +++ SELFPHP CronJob-Service :: Jetzt auch als Professional-Version verfügbar! +++



:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP? In über 120.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

:: Qozido ::

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.   

 
 
Formular samt Autoresponder




Nun kommen wir zu einem weiteren Punkt, der sich wohl nicht vermeiden lässt, nämlich der Umsetzung eines Kontaktformulars. Was wäre eine Website ohne ein Kontaktformular, schließlich sollen mögliche Besucher, Interessenten oder Kunden in der Lage sein, mit dem Betreiber der Website Kontakt aufzunehmen.

Um ein voll funktionsfähiges Kontaktformular umzusetzen, bedarf es nicht viel. Soll es jedoch beliebig viele Formularelemente verarbeiten können, sodass es für unterschiedliche Zwecke eingesetzt werden kann, müssen Sie etwas mehr Know-how haben.

Zur Umsetzung der Eingabemaske benötigen Sie zunächst eine HTML-Seite mit dem Namen kontaktformular.htm, welche ein von Ihnen entworfenes Formular enthält. Beim Einsatz der Formularelemente innerhalb der HTML-Seite ist darauf zu achten, dass das E-Mail-Textfeld den Namen mailer_email erhält. Alle anderen Formularelemente können Sie beliebig bezeichnen.



Bild 5.15: Aufbau der kontaktformular.htm-Eingabemaske

Für die Verarbeitung der Formulardaten sind zwei Skripts verantwortlich:
  • atomicmailer.php – In diesem Skript werden die Daten, welche aus kontaktformular.htm stammen, gefiltert und überprüft und anschließend von autorespond.php weiterverarbeitet.
  • autorespond.php – In diesem Skript wird dafür gesorgt, dass sowohl der Betreiber (webmaster) als auch der Besucher eine Mail erhalten. Der Betreiber erhält die Angaben des Besuchers und der Besucher eine Benachrichtigung darüber, dass seine Anfrage so schnell wie möglich bearbeitet wird.

Zusätzlich wurden folgende drei Ordner angelegt:
  • bild – Enthält das Mailerlogo (mailerlogo.gif), hier können Sie nach Belieben weitere Grafikdateien ablegen.
  • css – Enthält die CSS-Datei (main.css), welche für das Layout des Kontaktformulars zuständig ist.
  • text – Enthält die Textdatei (automail.txt) mit der Autorespond-Nachricht für den Besucher.




Bild 5.16: Dateischema des Kontaktformulars


1. Atomicmailer.php
<?php
$form_name = "kontaktformular.htm";

//Stammen die Daten vom Formular?
if (isset($_POST["senden"])) {

// Textfeldeingaben filtern
function daten_reiniger($inhalt) {
  if (!empty($inhalt)) {
    // HTML- und PHP-Code entfernen.
    $inhalt = strip_tags($inhalt);
    // Umlaute und Sonderzeichen in
    //HTML-Schreibweise umwandeln
    $inhalt = htmlentities($inhalt);
    // Entfernt überflüssige Zeichen
    // Anfang und Ende einer Zeichenkette
    $inhalt = trim($inhalt);
    // Backslashes entfernen
    $inhalt = stripslashes($inhalt);
  }
return $inhalt;
}

// Schreibarbeit durch Umwandlung ersparen
foreach ($_POST as $key=>$element) {
  if ($key != "senden") {
    // Eingaben Filtern
    $daten = daten_reiniger($element);
    // Dynamische Variablen erzeugen, wie mailer_name, etc.
    ${"mailer_".$key} = $daten;
    $maildaten .= "$key: $daten\n";
  }
}

//Mailadresse korrekt angegeben – Name entsprechend formatieren
if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$mailer_email)){
  $error_msg.="Fehlerhafte E-mail!<br>";
}

// Prüfen, ob Fehler vorgekommen sind!
if($error_msg){
  echo "
  <html>
  <head>
  <title>Atomic-Mailer v1.0 – Fehler</title>
  <link rel='stylesheet' href='css/main.css' type='text/css'>
  </head>
  <body bgcolor='#FFFFFF' text='#000000'>
  <p align='center'><img src='bild/mailerlogo.gif' width='700' height='59'></p>
  <table width='300' align='center'>
    <tr>
      <td align='center' class='latestnews' colspan='3'>- FEHLER – <br>
      <p>$error_msg</p>
      <a href='$form_name' class='contentlink'>Zurück</a><br>
        Ihre Anfrage konnte nicht übermittelt werden.<br>
        Versuchen Sie es bitte erneut!<br>
      </td>
    </tr>
  </table>
  </body>
  </html>
";

} else {
$mailer_datum=date("Y-m-d H:i:s");

echo "
<html>
<head>
<title>Atomic-Mailer v1.0 – Versand</title>
<link rel='stylesheet' href='css/main.css' type='text/css'>
</head>
<body bgcolor='#FFFFFF' text='#000000'>
<p align='center'><img src='bild/mailerlogo.gif' width='700' height='59'></p>
<table width='300' align='center'>
  <tr>
    <td align='center' class='latestnews' colspan='3'>- Vielen Dank! – <br>
      Ihre Anfrage wurde erfolgreich verschickt.<br>
      Vielen Dank!<br>
    <a href='$form_name' class='contentlink'>Zurück</a></td>
  </tr>
</table>
</body>
</html>
";

include("autorespond.php");

}

} else {
echo "
<html>
<head>
<title>Atomic-Mailer v1.0 – Fehler</title>
<link rel='stylesheet' href='css/main.css' type='text/css'>
</head>
<body bgcolor='#FFFFFF' text='#000000'>
<p align='center'><img src='bild/mailerlogo.gif' width='700' height='59'></p>
<table width='300' align='center'>
  <tr>
    <td align='center' class='latestnews' colspan='3'>- FEHLER – <br>
      Ihre Anfrage konnte nicht übermittelt werden.<br>
      Versuchen Sie es bitte erneut!<br>
    <a href='$form_name' class='contentlink'>Zurück</a></td>
  </tr>
</table>
</body>
</html>
";
}
?>




Bild 5.17: Kontaktformular im Einsatz

2. Autorespond.php

<?php

if (isset($_POST["senden"])) {

// Mail an Webmaster
$webmaster="matthiask@flashstar.de";

$mailinhalt = "
Atomic-Mailer – Anfrage\n
__________________\n
E-mail: $mailer_email\n
__________________\n
$maildaten
__________________\n
Zeit: $mailer_datum\n
__________________\n";

@mail($webmaster, "Atomic-Mailer – Anfrage", $mailinhalt, "From: $mailer_email");

// Autoresponder
$datei = "text/automail.txt";
$fp = fopen($datei, "r");
$inhalt = fread($fp,filesize($datei));
fclose($fp);

@mail("$mailer_email", "Atomic-Mailer – Danke für Ihre Anfrage", "$inhalt\n\n","From:$webmaster");

} else {

echo "
<html>
<head>
<title>Atomic-Mailer v1.0</title>
<link rel='stylesheet' href='css/main.css' type='text/css'>
</head>
<body bgcolor='#FFFFFF' text='#000000'>
<p align='center'><img src='bild/mailerlogo.gif' width='700' height='59'></p>
<table width='300' align='center'>
  <tr>
    <td align='center' class='latestnews' colspan='3'>- FEHLER – <br>
      Die Anfrage konnte nicht übermittelt werden.<br>
      Versuchen Sie es bitte erneut!<br>
    <a href='kontaktformular.htm' class='contentlink'>Zurück</a></td>
  </tr>
</table>
</body>
</html>
";
}

?>


Variante Formmailer

Formulare gibt es in unterschiedlichen Formen und Darstellungsweisen. Eines jedoch haben sie gemeinsam, alle versenden Daten via GET oder POST. Die Frage ist nur, wie der Server diese Daten verarbeitet und wie PHP dabei behilflich sein kann. Ich möchte Ihnen dazu einen Formmailer vorstellen.



Bild 5.18: Formmailer-Formular – HTML-Dokument


Das Formular selbst ist ein einfaches HTML-Dokument, welches über JavaScript-Abfragen und Formularelemente verfügt. Die wohl interessanteste Passage im HTML-Dokument sind folgende Codezeilen:

<input type="hidden" name="mailer" value="Atomic Mailer">
<input type="hidden" name="trennzeichen" value=": ">
<input type="hidden" name="automailtext" value="answer.txt">
<input type="hidden" name="weiterleitung" value="meldung.htm">

Innerhalb des <form>-Tags werden die Übertragungsmethode und das betreffende PHP-Dokument festgelegt. Die <input>-Felder, welche versteckt sind, dienen als Konfigurationshilfe.
  • Das mailer-Feld legt den Namen des Formmailers innerhalb der Betreffzeile einer E-Mail fest.
  • Das trennzeichen-Feld wird in der E-Mail einen Doppelpunkt zwischen dem jeweiligen Formularelement und dem Inhalt setzen.
  • Das automailtext-Feld enthält den für die automatische Rückantwort benötigten Dateinamen.
  • Das weiterleitung-Feld verweist auf die URL bzw. auf das Dokument, welches nach dem erfolgreichen Versenden der Mail erscheinen soll.

Achtung: Sie sollten bei der Erweiterung des Formulars unbedingt darauf achten, dass Sie diese vier versteckten Felder nicht entfernen und, falls Sie sie anpassen wollen, lediglich die Inhalte der value-Attribute bearbeiten.

Im PHP-Dokument mailform.php sind die für die Mailübertragung verantwortlichen Codezeilen enthalten. Um die Formulardaten an eine bestimmte E-Mail-Adresse und einen Webmaster zu versenden, müssen Sie die zwei folgenden Codezeilen anpassen:

$webmaster = "Matthias Kannengiesser";
$webmastermail = "matthiask@flashstar.de";

Sämtliche übrigen Codezeilen müssen nicht angepasst werden. Der Formmailer verfügt über folgende Funktionen:
  • Der Webmaster erhält eine formatierte Mail des Nutzers.
  • Sämtliche Formularelemente werden verschickt, egal, wie viele Formularelemente auch immer im formular.htm enthalten sind. Ausnahmen bilden die Inhalte der versteckten Felder und der Senden-Schalter.



Bild 5.19: Fehler bzw. erfolgreiche Übertragung der Formulardaten
  • Festlegung von benutzerdefinierten Fehlermeldungen
  • Abfangen der System-Fehlermeldungen
  • Der Benutzer des Formulars erhält eine automatische Rückmeldung



 




:: Premium-Partner ::

Webhosting/Serverlösungen


Premium-Partner MECO Systemhaus GmbH & Co. KG
Premium-Partner PSW GROUP GmbH & Co. KG
Premium-Partner BPI-Systeme
Premium-Partner Pixel X
Premium-Partner
 

:: SELFPHP Sponsoren ::


Microsoft Deutschland GmbH
twosteps.net - ...Premium-Webhosting
Sedo - Bei uns wird PHP großgeschrieben
hostfactory.ch - OptimaNet Schweiz AG
ZEND - The PHP Company
Kaspersky Labs
HighText iBusiness
SELFPHP Sponsoren
 

Qozido


© 2001-2009 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt