[GELÖST]kontaktformular
« am: 11.10.2008 13:38 Uhr »
Hallo, ich habe ein Kontaktformular welches die Datei mailer.php per "action" anspricht. Diese soll dann die daten übermitteln. Bei dem check, ob der besucher alles ausgefüllt hat, habe ich ein problem. Ich kriege die Meldung "Vergewissern Sie sich, dass alles ausgefüllt ist!" auch wenn ich in alle drei Felder (Name, E-Mail, Message) was eingetragen habe.

Könnt ihr mir helfen?

HTML:
<form id="Kontaktformular" name="Kontaktformular" method="post" action="php/mailer.php">
<input class="text_input" type="text" name="name">
<input class="text_input" type="text" name="email">
<textarea class="text_input" name="message"></textarea>
<input id="submitbotton" type="submit" value="senden" name="submit">

PHP (mailer.php):
<?php

if(isset($_POST['submit'])) {

$to "max@web.de";
$subject "Kontaktaufnahme";
$name_field $_POST['name'];
$mail_field $_POST['email'];
$message $_POST['message'];
 
$body "Eine neue Nachricht wurde uber das Kontaktformular ubermittel:\n \n Name des Absenders: $name_field\n E-Mail-Adresse von          $name_field$email_field\n \n Nachricht:\n $message";

if (empty($name_field) OR empty($email_field) OR empty($message)) {
echo '<script language="javascript">confirm("Vergewissern Sie sich, dass alles ausgefüllt ist!")</script>';
echo '<script language="javascript">window.location = "http://www.***********.de/kontakt.html"</script>';
}
else {
mail($to$subject$body"From:info@web.de<Kontaktbereich>" );
echo "Das ausgefüllte Formular wurde an $to! gesendet. Vielen Dank für Ihre Kontaktaufnahme";
}
 



else {

echo "Diese Datei darf nicht direkt aufgerufen werden";
}
?>

« Letzte Änderung: 11.10.2008 14:54 Uhr von Mexx »

Re: kontaktformular
« Antwort #1 am: 11.10.2008 14:53 Uhr »
hat sich erledigt, hatte statt "mail_field" "email_field" geschrieben.

*

Offline driet

  • *
  • 734
  • Volle Kanne, Hoschi!
    • Profil anzeigen
Re: [GELÖST]kontaktformular
« Antwort #2 am: 12.10.2008 14:00 Uhr »
Hi,

dein Kontaktformular scheint mir von der Seite der Sicherheit her etwas zu einfach gehalten. Falls der Quelltext so komplett ist, findet keine Prüfung der Benutzereingaben statt. Böse Menschen können ggf. so dein Programm mit der Eingabe von Steuerzeichen gefährden.

Ein etwas komplexeres Script sieht z.B. so aus:
http://www.gaijin.at/scrphpmailer.php

Weiterhin bin ich mir nicht sicher, ob web.de sich freut, wenn info ät web .de in deinem Script Verwendung findet.

Grüße!
Problemlösungswahrsager, Glaskugelmethode

Re: [GELÖST]kontaktformular
« Antwort #3 am: 12.10.2008 14:13 Uhr »
Hallo driet,

ich dachte unbefugtem Zugriff wird dadurch vorgebeugt, dass das script nur ausgefürt wird wenn es über "submit" aufgerufen wurde. Sonst kommt ja die Meldung:"Diese Datei darf nicht direkt aufgerufen werden". Oder kann die Datei trotzdem missbraucht werden?

Was info@web.de betrifft: Alle E-Mail Adresse und URLs im geposteten Script sind nicht die echten.


Grüße, Max

*

Offline driet

  • *
  • 734
  • Volle Kanne, Hoschi!
    • Profil anzeigen
Re: [GELÖST]kontaktformular
« Antwort #4 am: 12.10.2008 14:29 Uhr »
Hi nochmal,

such mal im web nach "php benutzer eingaben validieren", das ist ein etwas komplexes Thema.

Bis demnäx!
Problemlösungswahrsager, Glaskugelmethode

Re: [GELÖST]kontaktformular
« Antwort #5 am: 13.10.2008 14:11 Uhr »
Habe jetzt eine Funktion mit eingefügt, um nach Steuerzeichen wie "bcc:" zu gucken:
<?php

if(isset($_POST['submit'])) {

$to "max@web.de";
$subject "Kontaktaufnahme";
$name_field $_POST['name'];
$mail_field $_POST['email'];
$message $_POST['message'];
 
$body "Eine neue Nachricht wurde uber das Kontaktformular ubermittel:\n \n Name des Absenders: $name_field\n E-Mail-Adresse von          $name_field$email_field\n \n Nachricht:\n $message";

                function 
checkforspam() {
return ( preg_match"/bcc:|Content-Type:/i"implode$_POST ) ) ) 
}

if (checkforspam() ) {
echo '<script language="javascript">confirm("Da das Signalwrte \"bcc\" oder \"Content-                           Type\" in ihrer Nachricht gefunden wurde, liegt der Verdacht auf Spam vor. Die Nachricht wurde deshalb nicht übermittelt.")</script>';
echo '<script language="javascript">window.location = "http://www.***********/kontakt.html"</script>';
}
else if (empty($name_field) OR empty($email_field) OR empty($message)) {
echo '<script language="javascript">confirm("Vergewissern Sie sich, dass alles ausgefüllt ist!")</script>';
echo '<script language="javascript">window.location = "http://www.***********.de/kontakt.html"</script>';
}
else {
mail($to$subject$body"From:info@web.de<Kontaktbereich>" );
echo "Das ausgefüllte Formular wurde an $to! gesendet. Vielen Dank für Ihre Kontaktaufnahme";
}
 



else {

echo "Diese Datei darf nicht direkt aufgerufen werden";
}
?>



« Letzte Änderung: 14.10.2008 11:36 Uhr von Mexx »

*

Offline driet

  • *
  • 734
  • Volle Kanne, Hoschi!
    • Profil anzeigen
Re: [GELÖST]kontaktformular
« Antwort #6 am: 13.10.2008 19:34 Uhr »
echo '<script language="javascript">window.location = "http://www.***********.de/kontakt.html"</script>';

Hi,

jetzt ist dir doch ein link in das quote gerutscht.  ;)

Es ging mir darum, php Steuerzeichen abzufangen und nicht mailausdrücke. Z.B. ' " / usw.

Grüße!
Problemlösungswahrsager, Glaskugelmethode

Re: [GELÖST]kontaktformular
« Antwort #7 am: 14.10.2008 11:49 Uhr »
Hallo driet, danke für deinen hinweis. Dann hast du wahrscheinlich auch die Testmail geschickt:

Zitat
Eine neue Nachricht wurde über das Kontaktformular übermittel:
 
 Name des Absenders: ''/"/n/n
 E-Mail-Adresse von ''/"/n/n: 123@test.de
 
 ''/"/n/n's Nachricht:
 '"//



könnt ihr mir mal dabei helfen, dass die Zeichen umgewandelt werden? Vielen Dank.
« Letzte Änderung: 14.10.2008 11:59 Uhr von Mexx »