Hi Vinzens, Hallo liebe "Gehilfen" :)
Vielen Dank noch einmal an Dich Vinzens, für Deine überaus großzügige Hilfe und für die Zeit die Du und die "Anderen" sich für mich bisher genommen haben. Ich habe heute fast den ganzen Tag damit verbracht das Script nahe zu fertig zu stellen. Dein Tipp, mit der Frage welchen Editor ich benutze war sowas von Gold wert :) Ich habe den einfachen Texteditor von Win-Doof benutzt, da ich immer gerne alle manuell eingebe, genau das war mein Grab.... Nach Googlen und nachlesen Deiner Ratschläge, lag es an dem bereits angelegten Header bzw BOM. Mit Dreamwaver, neu angelegter PHP und einfügen des Scriptes hat es dann mit der start_session() geklappt...
Nun, habe ich leider gottes und irgendwie tut es mir auch sehr leid, ein Script geschnappt und es entsprechend angepasst.
das fertige Skript ist fragwürdiger als das, was Du bisher hattest.
Ich denke nun ist es ziehmlich gut überarbeitet.
Ich habe aber Deine Ratschläge gelesen und zum grösten Teil verstanden.
dann solltest Du erkennen, dass ich Dir einen Fehler zu Unrecht angekreidet habe, den dieses fertige Skript begeht.
Konnte ich nicht finden, hilf mir auf die Sprünge :)
if(isset($_POST['abschicken'])){ while(list($feld,$wert)=each($_POST)){ // übermittelte Inhalte "entschärfen" $wert=preg_replace("/(content-type:|bcc:|cc:|to:|from:)/im", "",$wert);
Das ist keine sinnvolle Entschärfung. Sieht eher nach Gießkanne aus.
Die Entschärfung habe ich entfernt, while(list... ist nun foreach ! :)
$$feld=$wert;
Variable Variablen tun immer weh und sind in nahezu allen Fällen ein
ernster Programmierfehler.
if($feld!="abschicken"){ $mailnachricht.=ucfirst($feld).": $wert\n"; } }
das ist das überflüssige Umkopieren, dazu noch in variable Variablen. Nein, das ist gar nicht schön. , solltest Du überhaupt keine Schleife über alle übergebenen Parameter laufen lassen - und diese an dieser unpassenden Stelle "entschärfen".
Dort komme ich im Moment nicht weiter. Wie löse ich dieses Problem, hab da nichts gescheites umsetzten können.... Außerdem möchte ich ein Feld des Arrays nicht ausgeben (Captchacode, "sicherheitscode" bzw $code), das wird in der Mail natürlich mitgesendet.
if(mail("adresse@domain.tld", $mailbetreff, $mailnachricht, "From: $Email"."\r\n".'Content-Type: text/plain; charset=UTF-8')){
[...]
[/code]
Warum willst Du die E-Mail-Adresse des Formularbenutzers unbedingt in den FROM-Header bekommen?
Ist nun geändert in "From: Kontaktformular"."\r\n".'Content.....
Vielleicht hast Du jetzt noch einmal Zeit das Script "durchzusehen" ich denke soweit ist es mir recht gelungen. Bis auf die Schleife oben bei der $$feld=$wert etc...
- Wie oben geschrieben, wie kann ich da nach den sauberen foreach den rest "überarbeiten"?
- Wie kann ich ein Feld in der Mail nicht ausgeben lassen ($code, "sicherheitscode"
LG und vielen vielen Dank bis hier her! Marc
<?php
$name="";
$firma="";
$adresse="";
$PLZ="";
$telefon="";
$fax="";
$Email="";
$art="";
$betreff="";
$text="";
$code="";
if(isset($_POST['abschicken'])){
foreach ($_POST as $feld => $wert){
//$wert=preg_replace("/(content-type:|bcc:|cc:|to:|from:)/im", "",$wert);
$$feld=$wert; // Wie kann ich das vermeiden?
if($feld!="abschicken"){
$mailnachricht.=ucfirst($feld).": $wert\n"; // Hier wird auch $code übergeben ("sicherheitscode, Captcha) wie kann ich das unterdrücken?
}
}
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);
}
else{
empty($code) ? $err[] = "": false;
}
empty($name) ? $err[] = "" : false;
empty($Email) ? $err[] = "" : false;
empty($betreff) ? $err[] = "" : false;
empty($text) ? $err[] = "" : false;
$mailnachricht .="\nDatum/Zeit: ". date("d.m.Y H:i:s");
if(!empty($err)) {
echo "<p><font color=red><p align=><strong> </p>";
foreach($err as $fehler){
echo $fehler;
}
?>
<form action="#" method="post" accept-charset="utf-8">
<table width="100%" border="0" cellpadding="3" cellspacing="1">
<?php if(empty($name)){?>
<tr><td><strong><font color=red>Name*: </font></strong></td><td><input name="name" size="25" type="text"></td></tr><?php }
else{?>
<tr><td>Name*: </td><td><input name="name" size="25" type="text" value="<?php echo $name;?>"></td></tr><?php }?>
<tr><td>Firma: </td><td><input name="firma" size="25" type="text" value="<?php echo $firma;?>"></td></tr>
<tr><td>Adresse: </td><td><input name="adresse" size="25" type="text" value="<?php echo $adresse;?>"></td></tr>
<tr><td>PLZ & Ort: </td><td><input name="PLZ" size="25" type="text" value="<?php echo $PLZ;?>"></td></tr>
<tr><td>Telefon: </td><td><input name="telefon" size="25" type="text" value="<?php echo $telefon;?>"></td></tr>
<tr><td>Fax: </td><td><input name="fax" size="25" type="text" value="<?php echo $fax;?>"></td></tr>
<?php if(empty($Email)){?>
<tr><td><strong><font color=red>E-Mail*: </font></strong></td><td><input name="Email" size="25" type="text"></td></tr>
<?php }
else{?>
<tr><td>E-Mail*: </td><td><input name="Email" size="25" type="text" value="<?php echo $Email;?>"></td></tr><?php }?>
<tr><td>Gewünschte<br />Kontaktart:   </td><td><select name="art" size="1"><option>Telefon</option><option>E-Mail</option><option>Post</option></select></td></tr>
<tr><td><br></td><td><br></td></tr>
<?php if(empty($betreff)){?>
<tr><td><strong><font color=red>Betreff*: </font></strong></td><td><input name="betreff" size="25" type="text"></td></tr><?php }
else{?>
<tr><td>Betreff*: </td><td><input name="betreff" size="25" type="text" value="<?php echo $betreff;?>"></td></tr><?php }?>
<?php if(empty($text)){?>
<tr><td><strong><font color=red>Nachricht*: </font></strong></td><td><textarea cols="50" name="text" rows="8" value="<?php echo $text;?>"></textarea></td></tr><?php }
else{?>
<tr><td>Nachricht*: </td><td><textarea cols="50" name="text" rows="8" value="<?php echo $text;?>"></textarea></td></tr><?php }?>
<?php if(empty($code)){?>
<tr><td><strong><font color=red>Sicherheitscode wiederholen*:   </font></strong></td><td><img src="captcha.php" border="0" title="Sicherheitscode"></td></tr><?php }
else{?>
<tr><td>Sicherheitscode wiederholen*:   </td><td><img src="captcha.php" border="0" title="Sicherheitscode"></td></tr><?php }?>
<tr><td></td><td><input type="text" name="sicherheitscode" size="15"><br><br></td></tr>
<tr><td align="center" colspan="2"><input name="abschicken" type="submit" value="Formular abschicken"> <input name="Reset" type="reset" value="Löschen"></td></tr>
</table>
</form>
<p>*Pflichtfelder</p>
<?php
// sind keine Fehler vorhanden, wird die Email versendet
} else {
$mailbetreff="Kontaktformular ".$_SERVER['HTTP_HOST'];
if(mail("adresse@domain.tld", $mailbetreff, $mailnachricht, "From: Kontaktformular"."\r\n".'Content-Type: text/plain; charset=UTF-8')){
echo "<p>Ihre eMail ist bei uns eingegangen, vielen Dank!</p>";
}
else {
echo "<p>Ein Fehler ist aufgetreten! Bitte kontaktieren Sie uns manuel. Mailadresse: adresse[at]domain.tld</p>";
}
}
// das Formular welches als erstes dem Besucher angezeigt wird
} else { ?>
<form action="#" method="post" accept-charset="utf-8">
<table width="100%" border="0" cellpadding="3" cellspacing="1">
<tr><td><strong>Name*: </strong></td><td><input name="name" size="25" type="text"></td></tr>
<tr><td>Firma: </td><td><input name="firma" size="25" type="text"></td></tr>
<tr><td>Adresse: </td><td><input name="adresse" size="25" type="text"></td></tr>
<tr><td>PLZ & Ort: </td><td><input name="PLZ" size="25" type="text"></td></tr>
<tr><td>Telefon: </td><td><input name="telefon" size="25" type="text"></td></tr>
<tr><td>Fax: </td><td><input name="fax" size="25" type="text"></td></tr>
<tr><td><strong>E-Mail*: </strong></td><td><input name="Email" size="25" type="text"></td></tr>
<tr><td>Gewünschte<br />Kontaktart:   </td><td><select name="art" size="1"><option>Telefon</option><option>E-Mail</option><option>Post</option></select></td></tr>
<tr><td><br></td><td><br></td></tr>
<tr><td><strong>Betreff*: <strong></td><td><input name="betreff" size="25" type="text"></td></tr>
<tr><td><strong>Nachricht*: </strong></td><td><textarea cols="50" name="text" rows="8"></textarea></td></tr>
<tr><td><strong>Sicherheitscode<br>wiederholen*:   </strong></td><td><img src="captcha.php" border="0" title="Sicherheitscode"></td></tr>
<tr><td></td><td><input type="text" name="sicherheitscode" size="15"><br><br></td></tr>
<tr><td align="center" colspan="2"><input name="abschicken" type="submit" value="Formular abschicken"> <input name="Reset" type="reset" value="Löschen"></td></tr>
</table>
</form>
<p>*Pflichtfelder</p>
<?php
}
?>