Hallo zusammen!
Ich hab für eine Website ein Kontaktformular gemacht (html/css), dass ich jetzt irgendwie auslesen, verarbeiten und abschicken muss.
Weil ich die Verarbeitung mit PHP machen wollte melde ich mich jetzt mit 2 Problemen diesbzgl. hier im PHP-Forum.
Das Formular sieht so aus:
Beim Submit wird dann erstmal per Javascript validiert:
Und bei erfolgreichem Durchlauf (oder deaktiviertem JS halt sofort) geht's an die mail.php.
Diese sieht nun so aus:
Wobei ich nun Hilfe brauche:
1.: Ein kleineres Problem, konnte es aber dennoch nicht lösen: Das Problem mit den Umlauten.
Nachrichten mit Umlauten werden nicht korrekt dargestellt in der Email.
Hab schon viele Sachen mit charset=utf-8, irgendwelchen Header-Direktiven oder einer MIME - Angabe ausprobiert... -> nichts
hat funktioniert leider...
2.: Das bei weitem größere Problem. Thema Sicherheit. Hab mich ein bisschen "umgesehen" und bei dem Thema Angriffe auf
PHP-Formulare echt Angstschweiß bekommen....
Gibt es irgendwelche EINFACHEN Mittel und Wege, Sachen/Anweisungen die ich einbauen kann um so ein php skript halbwegs
sicher zu übermitteln? (wo man nicht 20 jahre php kenntnisse haben muss um 3 seiten-lange Abfragen zu formulieren)
Hab in PHP eher Grundkenntnisse...
Hoffe ihr könnt mir helfen.
und Danke schonmal.
mfG
Ich hab für eine Website ein Kontaktformular gemacht (html/css), dass ich jetzt irgendwie auslesen, verarbeiten und abschicken muss.
Weil ich die Verarbeitung mit PHP machen wollte melde ich mich jetzt mit 2 Problemen diesbzgl. hier im PHP-Forum.
Das Formular sieht so aus:
HTML:
<fieldset id="kontakt">
<form id="kontakt" name="kontaktformular"
action="mail.php" method="post" enctype="multipart/form-data"
onsubmit="return chkFormular()">
<div style="float:left">
<input class="required" id="vorname" name="vorname" type="text" value="Vorname" required="required"
onfocus="if(this.value == 'Vorname') { this.value = ''; }"
onblur="if(this.value == '') { this.value = 'Vorname';} if(this.value != 'Vorname fehlt!' && this.value != 'Vorname') {this.className = 'correct';}">
</div>
<div style="float:right; margin-right:-5px">
<input class="required" id="nachname" name="nachname" type="text" value="Nachname" required="required"
onfocus="if(this.value == 'Nachname') { this.value = ''; }"
onblur="if(this.value == '') { this.value = 'Nachname';} if(this.value != 'Nachname fehlt!' && this.value != 'Nachname') {this.className = 'correct';}">
</div>
<div style="float:left">
<input class="required" name="email" type="text" value="Ihre Email" required="required"
onfocus="if(this.value == 'Ihre Email') { this.value = ''; }"
onblur="if(this.value == '') { this.value = 'Ihre Email';this.className='correct';} if(this.value != 'Email fehlt!' && this.value != 'Ihre Email') {this.className = 'correct';}">
</div>
<div style="float:left">
<input class="required" name="betreff" type="text" value="Betreff" required="required"
onfocus="if(this.value == 'Betreff') { this.value = ''; }"
onblur="if(this.value == '') { this.value = 'Betreff';} if(this.value != 'Betreff fehlt!' && this.value != 'Betreff') {this.className = 'correct';}">
</div>
<div style="float:left">
<textarea class="required" name="nachricht" cols="20" rows="5" required="required"
onfocus="if(this.value == 'Nachricht') { this.value = ''; }"
onblur="if(this.value == '') { this.value = 'Nachricht'; } if(this.value != 'Nachricht fehlt!' && this.value != 'Nachricht') {this.className = 'correct';}"> Nachricht</textarea>
</div>
<div>
<input class="button" type="submit" value="Senden" />
</div>
</form>
</fieldset>
Beim Submit wird dann erstmal per Javascript validiert:
Code:
<script type="text/javascript">
function chkFormular () {
if (document.kontaktformular.vorname.value == "Vorname") {
document.kontaktformular.vorname.className = 'error'
document.kontaktformular.vorname.value = "Vorname fehlt!"
document.kontaktformular.vorname.focus();
return false;
}
if (document.kontaktformular.nachname.value == "Nachname") {
document.kontaktformular.nachname.className = 'error'
document.kontaktformular.nachname.value = "Nachname fehlt!"
document.kontaktformular.nachname.focus();
return false;
}
if (document.kontaktformular.email.value == "Ihre Email") {
document.kontaktformular.email.className = 'error'
document.kontaktformular.email.value = "Email fehlt!"
document.kontaktformular.email.focus();
return false;
}
if (document.kontaktformular.email.value.indexOf("@") == -1) {
document.kontaktformular.email.className = 'error'
document.kontaktformular.email.value = "Email fehlt!"
document.kontaktformular.email.focus();
return false;
}
if(document.kontaktformular.betreff.value == "Betreff") {
document.kontaktformular.betreff.className = 'error'
document.kontaktformular.betreff.value = "Betreff fehlt!"
document.kontaktformular.betreff.focus();
return false;
}
if(document.kontaktformular.nachricht.value == "Nachricht") {
document.kontaktformular.nachricht.className = 'error'
document.kontaktformular.nachricht.value = "Nachricht fehlt!"
document.kontaktformular.nachricht.focus();
return false;
}
}
</script>
Und bei erfolgreichem Durchlauf (oder deaktiviertem JS halt sofort) geht's an die mail.php.
Diese sieht nun so aus:
PHP:
<?php
if(isset($_POST['vorname'])) // feststellen, ob das Formular abgeschickt wurde
{
setlocale(LC_ALL, 'de_DE');
error_reporting(0);
if($_POST['vorname'] == "Vorname")
{
ob_start();
echo "Keinen Vornamen eingegeben!<br>";
echo "Senden nicht erfolgreich.<br>";
echo "Sie werden in 5 Sekunden weitergeleitet.";
header("Refresh: 5; http://www.illutie.de/test/kontakt.html");
ob_end_flush();
exit;
}
else
if($_POST['nachname'] == "Nachname")
{
ob_start();
echo "Keinen Nachnamen eingegeben!<br>";
echo "Senden nicht erfolgreich.<br>";
echo "Sie werden in 5 Sekunden weitergeleitet.";
header("Refresh: 5; http://www.illutie.de/test/kontakt.html");
ob_end_flush();
exit;
}
else
if($_POST['email'] == "Ihre Email")
{
ob_start();
echo "Keine Emailaddresse eingegeben!<br>";
echo "Senden nicht erfolgreich.<br>";
echo "Sie werden in 5 Sekunden weitergeleitet.";
header("Refresh: 5; http://www.illutie.de/test/kontakt.html");
ob_end_flush();
exit;
}
else
if($_POST['betreff'] == "Betreff")
{
ob_start();
echo "Keinen Betreff eingegeben!<br>";
echo "Senden nicht erfolgreich.<br>";
echo "Sie werden in 5 Sekunden weitergeleitet.";
header("Refresh: 5; http://www.illutie.de/test/kontakt.html");
ob_end_flush();
exit;
}
else
if($_POST['nachricht'] == "Nachricht")
{
ob_start();
echo "Keine Nachricht eingegeben!<br>";
echo "Senden nicht erfolgreich.<br>";
echo "Sie werden in 5 Sekunden weitergeleitet.";
header("Refresh: 5; http://www.illutie.de/test/kontakt.html");
ob_end_flush();
exit;
}
else
{
$vorname = htmlentities($_POST['vorname']);
$nachname = htmlentities($_POST['nachname']);
$email = htmlentities($_POST['email']);
$betreff = htmlentities($_POST['betreff']);
$nachricht = htmlentities($_POST['nachricht']);
//$empfaenger = "info@illutie.com";
mail($empfaenger, $betreff, $nachricht,
"From: $vorname $nachname <$email>");
header("Refresh: 0; http://www.illutie.de/test/erfolg.html");
exit;
}
}
?>
Wobei ich nun Hilfe brauche:
1.: Ein kleineres Problem, konnte es aber dennoch nicht lösen: Das Problem mit den Umlauten.
Nachrichten mit Umlauten werden nicht korrekt dargestellt in der Email.
Hab schon viele Sachen mit charset=utf-8, irgendwelchen Header-Direktiven oder einer MIME - Angabe ausprobiert... -> nichts
hat funktioniert leider...
2.: Das bei weitem größere Problem. Thema Sicherheit. Hab mich ein bisschen "umgesehen" und bei dem Thema Angriffe auf
PHP-Formulare echt Angstschweiß bekommen....
Gibt es irgendwelche EINFACHEN Mittel und Wege, Sachen/Anweisungen die ich einbauen kann um so ein php skript halbwegs
sicher zu übermitteln? (wo man nicht 20 jahre php kenntnisse haben muss um 3 seiten-lange Abfragen zu formulieren)
Hab in PHP eher Grundkenntnisse...
Hoffe ihr könnt mir helfen.
und Danke schonmal.
mfG
Zuletzt bearbeitet: