Hallo liebes Forum. Ich habe mich mal wieder an einem Formular versucht, welches eine Möglichkeit gegen den Mißbrauch in Bezug aud Spam mittels "header-injection" und "XSS" bieten soll. Da ich jedoch kein PHP Profi bin, möchte ich an dieser Stelle um Euer Feedback bitten.
hier nun das Script:
Aufgrund der Barrierefreiheit möchte ich auf Captchas verzichten.
Für Verbesserungsvorschläge bin ich sehr dankbar! Vielen Dank für Eure Hilfe.
Liebe Grüße
hier nun das Script:
Code:
<p align="center" class="error">
<?php
//Entferne nicht gewünschte Zeichen
$entfernen = array("\r\n\r\n","\R\N\R\N",".\n",".\r","<CRLF>","<crlf>","<cr>","<CR>","<lf>","<LF>","bcc","BCC","cc","CC","from:","FROM:","to:","TO:","MIME","mime","content-type","CONTENT-TYPE","/");
$aendern = array("","","","","","","","","","","","","","","","","","","","","");
foreach($_POST as $key=>$value) $_POST[$key]=str_replace($entfernen,$aendern,$value); // \r\n und \r ändern in \n
//Wandle HTML TAGS
$firma = htmlspecialchars($_POST['firma']);
$anrede = htmlspecialchars($_POST['anrede']);
$name = htmlspecialchars($_POST['name']);
$strasse = htmlspecialchars($_POST['strasse']);
$plz = htmlspecialchars($_POST['plz']);
$telefon = htmlspecialchars($_POST['telefon']);
$email = htmlspecialchars($_POST['email']);
$betreff = htmlspecialchars($_POST['betreff']);
$nachricht = htmlspecialchars($_POST['nachricht']);
$checke = htmlspecialchars($_POST['checke']);
//Prüfe ob abgeschickt wurde
if(isset($_POST['submit']) && $checke == 423){
//Prüfung ob die Felder entsprechend ausgefüllt wurden
//Firma kein Pflichtfeld
//Anrede
if(!$anrede && empty($anrede)){echo ("Bitte wählen Sie eine Form der Anrede aus.<br>");}else{ $check1 = true;}
//Name
if(!$name && empty($name)){echo ("Bitte nennen Sie uns Ihren Namen.<br>");}else{ $check2 = true;}
//Strasse und Nummer
if(!$strasse && empty($strasse)){echo ("Bitte geben Sie einen Strassennamen mit Hausnummer an.<br>");}else{ $check3 = true;}
//PLZ und Ort
if(!$plz && empty($plz)){echo ("Bitte geben Sie Ihre Postleitzahl und den Wohnort ein.<br>");}else{ $check4 = true;}
//Telefon kein Pflichtfeld
//Prüfe Gültigkeit der eMailadresse
if(!$email){echo ("Bitte geben Sie Ihre eMailadresse an.<br>");}else{ $check5 = true;}
$checkemail = eregi( "^" .
"[a-z0-9]+([_\\.-][a-z0-9]+)*". //user
"@". //@ zeichen
"([a-z0-9]+([\.-][a-z0-9]+)*)+". //domain
"\\.([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|nato|net|org|pro)" . //sld, tld
"$", $_POST['email']);
if (!$checkemail){echo "Bitte geben Sie eine korrekte Email Adresse ein.<br>";
$mailCheck = 2;
}
else{ $mailCheck = 1;}
//Betreff
if(!$betreff && empty($betreff)){echo ("Bitte geben Sie einen Betreff an.<br>");}else{ $check6 = true;}
//Nachricht
if(!$nachricht){echo ("Wie lautet Ihre Nachricht an uns?<br>");}else{ $check7 = true;}
//Prüfe alle Errorcodes
if($check1 == true && $check2 ==true && $check3 ==true && $check4 ==true && $check5 ==true && $check6 ==true && $check7 ==true && $mailCheck == 1){
//echo "alles o.k.";
//Nicht Pflichtfelder für Empfänger erkenntlich machen.
//Telefon kein Pflichtfeld
if(!$telefon && empty($telefon)){ $telefon = "Keine Angabe!";}
//Firma kein Pflichtfeld
if(!$firma && empty($firma)){ $firma = "Keine Angabe!";}
//DATEN ABSCHICKEN
$empfaenger="empfaenger@adresse.de";
$text="Firma:
$firma
Anrede:
$anrede
Name:
$name
Strasse / Nr.:
$strasse
PLZ / Ort:
$plz
Telefon:
$telefon
eMailadresse:
$email
Nachricht:
$nachricht ";
mail($empfaenger,$betreff, $text,"From:Kontaktformular@Ihre_Webseite.de");
echo "<p align=center class=versand>Wir werden Ihre Anfrage schnellstmöglich bearbeiten und anschließend, wenn
von Ihnen gewünscht, Kontakt zu Ihnen aufnehmen.</p>";
//Variablen zurücksetzen
unset($firma);
unset($anrede);
unset($name);
unset($strasse);
unset($plz);
unset($telefon);
unset($email);
unset($betreff);
unset($nachricht);
}
//schliessende Klammer der Prüfung ob das Formular abgeschickt wurde
}
?>
</p>
<form action="" method="post" name="contactMe">
<table width="560" border="0" align="center" cellpadding="3" cellspacing="0">
<tr>
<td class="txtMainBold">Firma:</td>
<td>
<input name="firma" type="text" id="firma" size="60" value="<?php if(isset($firma)){ echo $firma; }?>">
</td>
</tr>
<tr>
<td class="txtMainBold">Anrede:</td>
<td>
<p>
<label>
<input name="anrede" type="radio" value="Herr" checked>
Herr</label>
<br>
<label>
<input type="radio" name="anrede" value="Frau">
Frau</label>
</p>
</td>
</tr>
<tr>
<td width="96" class="txtMainBold">Ihr Name: </td>
<td width="452"><label>
<input name="name" type="text" id="name" size="60" value="<?php if(isset($name)){ echo $name; }?>">
</label></td>
</tr>
<tr>
<td class="txtMainBold">Strasse / Nr.: </td>
<td>
<input name="strasse" type="text" id="strasse" size="60" value="<?php if(isset($strasse)){ echo $strasse; }?>">
</td>
</tr>
<tr>
<td class="txtMainBold">PLZ / Ort: </td>
<td>
<input name="plz" type="text" id="plz" size="60" value="<?php if(isset($plz)){ echo $plz; }?>">
</td>
</tr>
<tr>
<td class="txtMainBold">eMailadresse:</td>
<td><input name="email" type="text" id="email" size="60" value="<?php if(isset($email)){ echo $email; }?>"></td>
</tr>
<tr>
<td class="txtMainBold">Telefonnummer:</td>
<td><input name="telefon" type="text" id="telefon" size="60" value="<?php if(isset($telefon)){ echo $telefon; }?>"></td>
</tr>
<tr>
<td class="txtMainBold">Betreff:</td>
<td><input name="betreff" type="text" id="betreff" size="60" value="<?php if(isset($betreff)){ echo $betreff; }?>"></td>
</tr>
<tr>
<td valign="top" class="txtMainBold">Ihre Nachricht: </td>
<td><label>
<textarea name="nachricht" cols="45" rows="5" id="nachricht" ><?php if(isset($nachricht)){ echo $nachricht; }?></textarea>
</label></td>
</tr>
<tr>
<td>
<input name="checke" type="hidden" id="checke" value="423">
</td>
<td><label>
<div align="center">
<input name="submit" type="submit" value="Abschicken">
</div>
</label></td>
</tr>
</table>
</form>
<br><br>
Aufgrund der Barrierefreiheit möchte ich auf Captchas verzichten.
Für Verbesserungsvorschläge bin ich sehr dankbar! Vielen Dank für Eure Hilfe.
Liebe Grüße
Zuletzt bearbeitet: