Sicheres Kontaktformular (PHP Formmailer mit Spam- Schutz)

"Sicher" kann man nie sein!

Aber hier ein kleines Kontaktformular mittels "post" über PHP_SELF (Formular und Script in einer Datei), welches zumindest Eingaben überprüft, keine ungültigen Mail-Adressen akzeptiert und falsche TO-, CC- oder BCC- Empfänger im Falle eines eventuellen Spam-Mißbrauchs unterdrückt.

Bling: Dieses Script ist nur als Denkanstoss zu sehen und sollte ggf. angepasst werden.


<?php
$mail_adresse =        "deine@mail-adresse.de";

#  Prüfen ob Formular abgeschickt wurde (anhand vom Namen des Submit-Buttons
#  Wenn ja wird der "mail-Teil" ausgeführt
# --------------------------------------------------------------------------
if (isset($_POST["senden"]))
{

# DATEN EINLESEN -----------------------------------------------------------
# --------------------------------------------------------------------------
$name         = $_POST['name'];
$email         = $_POST['email'];
$nachricht     = $_POST['nachricht'];
# --------------------------------------------------------------------------

if (!eregi("^[A-Za-z0-9]+((\\.|!|_|\\+|\\-)[A-Za-z0-9]+)*@([A-Za-z0-9]+(\\.|\\-))+[A-Za-z0-9]{2,4}$", $email)) {
    $valid_mail         = "no";
    $valid_mail_text    = "Bitte achten Sie auch darauf, eine gültige E-Mail Adresse einzugeben.";
}

if ($name == "" || $email == "" || nachricht == "" || $valid_mail == "no"){
    echo "<h2>Fehler bei der Übermittlung</h2>Bitte beachten Sie die hervorgehobenen Felder (*). Diese Felder sind Pflichtfelder.</p>";
    echo "<p>$valid_mail_text</p>";

    echo "<h3>Genauere Fehlerursache:</h3>";
    echo "<ul>";
if ($name == "") { echo "<li>Sie haben keinen Namen eingegeben</li>"; }
if ($email == "" || $valid_mail == "no") { echo "<li>Sie haben keine gültige Email-Adresse eingegeben</li>"; }
if ($nachricht == "") { echo "<li>Sie haben keine Nachricht eingegeben...</li>"; }
    echo "</ul>";

    echo "<p><a href='javascript:history.back()'>zurück</a></p>";
    end;
    }
else{

#    SPAM-SCHUTZ
#    Quelle: http://www.drweb.de/webmaster/kontakt-formulare.shtml
#    ---------------------------------------------------------------------------------------------------
$absender = preg_replace( "/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "",  $_POST['email'] );
$absender = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $absender );
#    ---------------------------------------------------------------------------------------------------

$EndNachricht = "
Folgende Nachricht wurde über das Kontaktformular übermittelt:\n\n

Name: $name \n
eMail: $email \n\n
Nachricht:\n$nachricht \n \n";

$txt = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $EndNachricht );

mail("$mail_adresse", "web-Kontaktformular", $txt, "From: $absender\n");

echo "<h2>Vielen Dank!</h2>";
echo "<p>Ihre Mail wurde erfolgreich verschickt und wird so schnell wie m&ouml;glich beantwortet.</p>";

}
}
else{
?>

<!---------  "HTML" - TEIL -------------->

<h2>Kontaktformular</h2>
<p>&nbsp;</p>
<fieldset>
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

<p>
<label for="name">Name*</label>
<br />
<input type="text" name="name" id="name" />
</p>

<p>
<label for="email">E-Mail*</label>
<br />
<input type="text" name="email" id="email" />
</p>

<p>
<label for="nachricht"> Nachricht*</label>
<br />
<textarea name="nachricht" id="nachricht" cols="40" rows="5"></textarea>
</p>
     
<input type="submit" value="Absenden" name="senden">
<input type="reset" value="Löschen" name="reset">
</p>
</form>
</fieldset>
<?php } ?>

 

abgelegt in Projekte Ι geposted von admin - 2007-07-03