Hallo zusammen,
seit einiger Zeit darf ich mich nun intensiver mit php beschäftigen. Für unsere Homepage habe ich ein Kontaktformular erstellt, das auch soweit ganz gut funktioniert.
Ich würde jetzt nur gerne wissen, welche Sicherheitsvorkehrungen ich beachten sollte.
Ich habe mir gedacht, dass ich mittels Regulären Ausdrücken nur bestimmte Zeichen im Namens-, Email- und Textfeld zulassen und somit verhindern könnte, dass irgendwelcher Code o.ä. über dieses Formular verschickt wird.
Irgendwie funktioniert das bei meiner Lösung aber noch nicht. Ich kann z.B. trotzdem noch ein ! im Namensfeld eingeben und die Email wird verschickt.
Wie mache ich es richtig?
Und ist es zwingend notwendig bei einer kleinen Homepage ein Captcha einzubauen?
Hier mal der Code:
PHP-Code:
<?php
if(isset($_POST['Submit'])){
//HTML- und PHP-Tags aus den Eingabefeldern entfernen
$name=strip_tags($_POST['name']);
$email=strip_tags($_POST['email']);
$anfrage=strip_tags($_POST['anfrage']);
if(!ereg("[a-zA-Z]+[a-zA-Z]",$name)){
$error_msg="Bitte geben Sie Ihren Namen an.<br>";
}
if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$email)){
$error_msg.="Bitte geben Sie eine gültige eMail-Adresse an.<br>";
}
if(strlen($anfrage)<3){
$error_msg.="Bitte geben Sie an, welche Anfrage Sie an uns richten möchten.<br>";
}
if(isset($error_msg)){
//Eines der Felder wurde nicht korrekt ausgefüllt
echo "Ihre Anfrage konnte aus folgenden Gründen leider nicht bearbeitet werden:<br><br>";
echo $error_msg;
echo "<br>Bitte klicken Sie auf <a href=javascript:history.back(1)>zurück</a> und füllen Sie alle Felder aus.";
}else{
//Alle Felder ausgefüllt - eMail generieren
$recipient="xxx@xxx.xx";
$subject="Eine Anfrage aus dem Internet";
$header="From: " . $email . "\r\n";
$mail_body ="Das Anfrage-Formular wurde am " . date("d.m.Y") . " um " . date("H:i") . "h ausgeführt.\n";
$mail_body.="Folgende Werte wurden eingetragen:\n\n";
$mail_body.="Name: " . $name . "\n";
$mail_body.="eMail: " . $email . "\n\n";
$mail_body.="Anfrage:\n";
$mail_body.=$anfrage . "\n\n ---- Ende der automatisch generierten eMail ----";
mail($recipient,$subject,$mail_body,$header);
//Formular ausgeführt - Meldung ausgeben
echo "Vielen Dank für Ihre Anfrage.<p>";
}
}else{
//Formular noch nicht ausgeführt - Formular anzeigen
?>
Lesezeichen