hallo allerseits,
ich hänge bei einem e-mail-formular, bzw. dessen verarbeitung fest.
das ist das formular ("formular.php"):
soweit gut, das funktioniert.
die übergabe und anzeige im prüf-formular funktioniert auch ("formular_pruef.php"):
die dritte datei ist die sendebestätigung und der schritt, mit dem die mail nun verschickt wird ("formular_bestaet.php"):
nun kommt das problem:
wenn der besucher ein hochkomma oder gänsefüßchen eingibt, wird der text mit einem backslash abgebrochen.
beispiel für eine eingabe:
ausgegeben und verschickt wird:
bei hochkomma wird abgebrochen, wenn ich "$anzeige" in hochkommas setze.
das ganze zum testen:
formular.php
frage:
was kann ich tun, damit der text so ausgegeben und verschickt wird, wie ihn der benutzer eingibt?
sind evtl. noch andere (sicherheitsrelevante) dinge zu beachten?
danke im voraus für eure hilfe!
detlef
ich hänge bei einem e-mail-formular, bzw. dessen verarbeitung fest.
das ist das formular ("formular.php"):
PHP-Code:
<!-- Start Kontaktformular -->
<form action="formular_pruef.php" method="post" accept-charset="utf-8">
<p>
<input type="text" name="mailadresse" size="35" maxlength="60" value="Ihre Adresse für elektronische Post" />
</p>
<p>
<strong>Ihre Nachricht:</strong>
<br />
<textarea name="text" rows="10" cols="55">Hier kommt Ihre Nachricht rein. </textarea>
</p>
<p>
<input name="Senden" type="submit" value="E-Mail versenden" />
<input name="Reset" type="reset" value="Eingaben zurücksetzen" />
</p>
</form>
<!-- Ende Kontaktformular -->
die übergabe und anzeige im prüf-formular funktioniert auch ("formular_pruef.php"):
PHP-Code:
<a name="seitenanfang"></a>
<form action="formular_bestaet.php" method="post" accept-charset="utf-8">
<?php
$mailtext = ($_POST[text]);
$mailtext = wordwrap ($_POST[text]);
$anzeige = "
<p>Hallo,</p>
<p>***blablatext***.</p>
Folgende Daten haben Sie zur Übermittlung eingegeben:
<p><pre>
<br /><span>E-Mail: <b>" . $_POST[mailadresse] . "</b></span>
<br />Ihr Nachrichtentext:<b><br />" .
stripslashes($mailtext) . "</b>
</pre></p>
<p> </p>
";
echo ($anzeige);
echo ("<p><input name=\"Senden\" type=\"submit\" value=\"E-Mail jetzt versenden\"></p>
<p></p>");
// Felder und Daten aus Formular versteckt übernehmen
function form_daten() {
if (isset($_POST)) {
foreach ($_POST as $key => $element) {
echo "<input type=\"hidden\" name=\"$key\" value=\"$element\">";
}
}
else {
foreach ($_GET as $key => $elem) {
echo "<input type=\"hidden\" name=\"$key\" value=\"$element\">";
}
}
};
//-----
form_daten();
?>
</form>
<hr />
<p>
Hier können Sie Ihre Eingaben korrigieren oder
<a class="seitenanfang" href="#seitenanfang" title="Sprung zum Seitenanfang">▲nach oben</a> zum Seitananfang springen:
</p>
<form action="formular_pruef.php" method="post" accept-charset="utf-8">
<p>
<input type="text" name="mailadresse" size="35" maxlength="60" value= "<?php echo $_POST[mailadresse] ?>" />
</p>
<p>
<b>Ihre Nachricht:</b><br />
<textarea name="text" rows="10" cols="50" wrap="virtual" >
<?php echo stripslashes($mailtext) ?></textarea>
</p>
<p>
<b>
<input name="Senden" type="submit" value="Berichtigung abschicken">
</b>
</p>
</form>
</p>
PHP-Code:
<?php
/* form_daten(); */
$mailtext = stripslashes($_REQUEST[text]);
$mailtext = wordwrap ($_REQUEST[text]);
// Empfänger
$empfaenger = $_REQUEST[mailadresse] . ', '; // beachten Sie das Komma
// $empfaenger .= 'detlef_wd001@localhost';
// Betreff
$betreff = "Kontaktformular: " . $_REQUEST[betreff];
// Meldung
$meldung =
"Hallo, <br />
<br />
Vielen Dank für Ihre Nachricht! ***blablatext***.
<br />
Folgende Daten haben Sie uns übermittelt: <br />
<pre>
E-Mail: " . $_REQUEST[mailadresse] . "
<br />Ihr Nachrichtentext: <br />" .
$mailtext . "
</pre>" . "<br />
*****blablatext****** <br />
";
// Bei HTML-E-Mails muss der 'Content-type'-Header gesetzt werden
$header = 'MIME-Version: 1.0' . "\n";
$header .= 'Content-type: text/html; charset=utf-8' . "\n";
// Headerangaben, wie To, From, CC, Bcc, etc. können
// zusätzlich angefügt werden.
/* $header .= 'To: $_REQUEST[vorname] $_REQUEST[name] <$_REQUEST[mailadresse]>' . "\n"; */
$header .= 'From: kontaktformular@localhost' . "\n";
/* $header .= 'Cc: [email]geburtstagsarchiv@beispiel.de[/email]' . "\r\n"; */
$header .= 'Bcc: detlef_wd001@localhost' . "\n";
// Mail versenden
mail($empfaenger, $betreff, $meldung, $header);
// Bildschirmausgabe der Sendebestätigung
$anzeige =
"<p>Hallo, </p>
<p>Vielen Dank für Ihre Nachricht! <br />
***blablatext***. </p>
<p>Folgende Daten wurden übermittelt (Sie erhalten eine E-Mail zur Bestätigung.): </p>
<div>
<pre>
<br />E-Mail: <b>" . $_REQUEST[mailadresse] . "</b>
<br />Ihr Nachrichtentext:<b><br />" . $mailtext . "</b>
</pre>
</div>";
echo ($anzeige);
?>
wenn der besucher ein hochkomma oder gänsefüßchen eingibt, wird der text mit einem backslash abgebrochen.
beispiel für eine eingabe:
EDIT:
http://www.babydienst.de
hier 'mein "text
ausgegeben und verschickt wird:
EDIT:
http://www.babydienst.de
hier \'mein \
bei hochkomma wird abgebrochen, wenn ich "$anzeige" in hochkommas setze.
das ganze zum testen:
formular.php
frage:
was kann ich tun, damit der text so ausgegeben und verschickt wird, wie ihn der benutzer eingibt?
sind evtl. noch andere (sicherheitsrelevante) dinge zu beachten?
danke im voraus für eure hilfe!
detlef
Kommentar