Joomla100 Support Forum

Sonstiges => Off Topic/Events und Termine => Thema gestartet von: Mexx am 11.10.2008 13:38 Uhr

Titel: [GELÖST]kontaktformular
Beitrag von: Mexx 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";
}
?>

Titel: Re: kontaktformular
Beitrag von: Mexx am 11.10.2008 14:53 Uhr
hat sich erledigt, hatte statt "mail_field" "email_field" geschrieben.
Titel: Re: [GELÖST]kontaktformular
Beitrag von: driet 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!
Titel: Re: [GELÖST]kontaktformular
Beitrag von: Mexx 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
Titel: Re: [GELÖST]kontaktformular
Beitrag von: driet 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!
Titel: Re: [GELÖST]kontaktformular
Beitrag von: Mexx 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";
}
?>



Titel: Re: [GELÖST]kontaktformular
Beitrag von: driet 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!
Titel: Re: [GELÖST]kontaktformular
Beitrag von: Mexx 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.