Kontaktformular

Auf einen Referrer-Check alleine würde ich mich jedenfalls nicht verlassen, gegebenfalls kann ein Script auch den gewünschten Referrer übergeben. Besser ist es, die Sicherheitslücken zu schließen, also v.a. Umbrüche in Eingabefeldern zu filtern, und eine Empfänger-Email entweder festzulegen oder auf gültige Form zu prüfen - wie auch auf der von Moritz verlinkten Seite beschrieben
 
Danke für euere Antworten!

Gibt es irgendwo kostenlos ein fertiges PHP Script oder so?
<-- Anfänger
biggrin.gif


lg
 
Evt. so:

CODE <?php

if (isset($_POST["senden"])) { # wenn der Submit Button betaetigt wurde, wird das Formular ausgewertet

# Parameter aus dem Array $_POST auslesen
$name = $_POST["name"];
$vname = $_POST["vorname"];
$email = $_POST["email"];
$betreff = $_POST["betreff"];
$bemerkung = $_POST["bemerkung"];

$fehler = 0;

if( $name == "") {
$namefehler = "<br><b>Fehler: Name fehlt</b><br>";
$fehler = 1;
}
if( $vname == ""){
$vornamefehler = "<br><b>Fehler: Vorname fehlt</b><br>";
$fehler = 1;
}
if( $email == "") {
$emailfehler = "<br><b>Fehler: E-Mail-Adresse fehlt</b><br>";
$fehler = 1;
}
if( $betreff == "") {
$betrefffehler = "<br><b>Fehler: Betreff fehlt</b><br>";
$fehler = 1;
}
if( $bemerkung == "") {
$bemerkungfehler = "<br><b>Fehler: Nachricht fehlt</b><br>";
$fehler = 1;
}
if (!preg_match('/^[a-z0-9_\.\-]+@[a-z0-9\.\-]+\.[a-z]{2,}$/i', $email)){
$emailfehler = "<br><b>Ungültiges Mailadressen-Format</b><br>";
$fehler = 1;
}

if (strstr($email, "\n")){
$emailfehler = "<br><b>Spam-Versuch? Keine Umbruchzeichen!</b><br>";
$fehler = 1;
}

if ($fehler){
$echome = "<font color='#FF0000'><br><b>Angaben unvollständig. Bitte füllen Sie alle Pflichtfelder aus!</b></font><br><br>";
}
else {
$empfaenger = "blubb@emailpoint.de"; //Deine Adresse
$ip = $_SERVER['REMOTE_ADDR'];
$nachricht = "Name: $name \nVorname: $vname \nE-Mail: $email \nIP: $ip \nBemerkungen:\n$bemerkung";
mail($empfaenger, $betreff, $nachricht, "From: $vname $name <$email>");
header("Location: danke.html");
exit;
}
}

?>
<table cellspacing="1" cellpadding="0">
<tr>
<td>
Kontakt
</td>
</tr>
<tr>
<td><div align="left">
<?phpecho $echome?>
<form name="kontakt" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table width="50%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" width="50%">Name:<strong><font color=#ff0000>*</font></strong></td>
<td><input size=20 name=name value="<?php echo $name; ?>"><?php echo $namefehler?></td>
</tr>
<tr>
<td valign="top" width="50%">Vorname:<strong><font color=#ff0000>*</font></strong></td>
<td><input size=20 name=vorname value="<?php echo $vname; ?>"><?php echo $vornamefehler?></td>
</tr>
<tr>
<td valign="top" width="50%">E-Mail:<strong><font color=#ff0000>*</font></strong></td>
<td><input type="text" name="email" size="30" maxlength="50" value="<?php echo $email; ?>"><?php echo $emailfehler; ?></td>
</tr>
</tr>
<tr>
<td valign="top" width="50%">Betreff:<strong><font color=#ff0000>*</font></strong></td>
<td><select name="betreff">
<option></option>
<option<?php echo ($betreff=="Vorschlag") ? " SELECTED":""; ?>>Vorschlag</option>
<option<?php echo ($betreff=="Angebot") ? " SELECTED":""; ?>>Angebot</option>
<option<?php echo ($betreff=="Feedback") ? " SELECTED":""; ?>>Feedback</option>
<option<?php echo ($betreff=="Fehler gefunden") ? " SELECTED":""; ?>>Fehler gefunden</option>
<option<?php echo ($betreff=="Reklamation") ? " SELECTED":""; ?>>Reklamation</option>
<option<?php echo ($betreff=="Anderes...") ? " SELECTED":""; ?>>Anderes...</option>
</select><?php echo $betrefffehler; ?></td>
</tr>
<tr>
<td colspan="2" valign="top">Bemerkung:<strong><font color=#ff0000>*</font></strong><br>
<textarea name="bemerkung" rows="4" cols="73"><?php echo $bemerkung; ?></textarea><?php echo $bemerkungfehler; ?></td>
</tr>
<tr>
<td colspan="2" valign="top"></td>
</tr>
<tr>
<td valign="top" width="50%"></td>
<td><input type="submit" name="senden" value="Senden"></td>
</tr>
</table>
</form>
<br><i>  Wir speichern zur Verhinderung von Spam und Missbrauch Ihre IP: <b><?php echo $_SERVER['REMOTE_ADDR']; ?></b></i>
</div>
</td>
</tr>
</table>

(ungetestet)
 
Zurück
Oben