Seite 1 von 2

Kontaktformular

Verfasst: 27.12.2011 00:18
von masterronnow
Hallöchen zusammen!

Habe mich die letzten Stunden mal dran gesetzt und ein Kontaktformular geschrieben.(https://www.phpbb.de/support/pastebin.p ... view&s=911)

Es soll ein Affenformular werden, heißt, wird ein Feld(Fehlerfall) nicht ausgefüllt und es wird auf "Abschicken" geklickt, erscheint eine Fehlermeldung unter dem Formular und die bereits ausgefüllten Felder bleiben ausgefüllt.

Ist aber alles korrekt und die Nachricht wird erfolgreich verschickt, ist es so, dass die ausgefüllten Felder ausgefüllt bleiben. Und das möchte ich nicht. Ich möchte nur, dass dies im Fehlerfall so ist. Für eine Lösung wäre ich dankbar.

Außerdem möchte ich das im Fehlerfall das fehlende input Feld Rot umrandet hervorgehoben wird, sodass der Nutzer schneller erkennen kann(Formular wird demnächst größer), welches Feld fehlt. Auch hier wäre ich für jede Hilfe dankbar.

Zum Abschluss wünsche ich euch noch einmal Frohe Weihnachten!

Re: Kontaktformular

Verfasst: 27.12.2011 13:26
von gn#36
Dein Formular ist im aktuellen Zustand leider eine Spamschleuder. Es ist sehr leicht, die Daten, die an deinen Server gehen so zu manipulieren, dass dieser Mails an beliebige Personen verschickt, da du deine Eingaben überhaupt nicht filterst, bevor du sie per mail Funktion verschickst. EInen interessanten Artikel zum Thema gab es beispielsweise bei Heise: http://www.heise.de/security/artikel/Ve ... 70758.html

Dass die Daten in jedem Fall ausgegeben werden, wenn es sie gibt liegt unter anderem an der Verarbeitungsreihenfolge. Wenn du erst die Ausgabe machst und dann die Mail verschickst wird dem User das Formular natürlich noch mal angezeigt - egal ob es nun schiefgegangen ist oder nicht. Du solltest erst die erhaltenen Daten prüfen und dann die Ausgabe machen - oder eben auch nicht. Dann kannst du auch z.B. eine Variable setzen wenn was fehlt und die dann bei der Ausgabe des Formulars berücksichtigen und z.B. die Hervorhebung durchführen.

Re: Kontaktformular

Verfasst: 02.01.2012 23:55
von masterronnow
Hallo,

erst einmal vielen dank für deine Hilfe. Ich werde mich heute Abend mal mit deinem erwähnten Artikel dran setzen und mein Glück versuchen.

Ich werde dann mal mein Überarbeitetes Formular hier posten und bitte dann noch einmal um Rat, ob das ganze so richtig ist und ich demnach alles richtig verstanden habe.

Was ich bis jetzt noch nicht Verstanden habe, ist die Sache mit der Hervorhebung. Wie genau soll ich da ran gehen?

Viele Grüße,
Kevin

Re: Kontaktformular

Verfasst: 03.01.2012 02:53
von masterronnow
Hallo,

hier jetzt noch einmal das überarbeitete Kontaktformular. (https://www.phpbb.de/support/pastebin.p ... view&s=914)

Durch die Überarbeitung hat sich das Problem mit den ausgefüllten Feldern nach abschicken des Formulars erledigt. Aber so wie es aussieht kann ich in jedem Feld nur einen Buchstaben eingeben und die Mail wird verschickt. Der Fehler scheint hier bei dem Feld "Nachricht" zu liegen. Denn sobald dort etwas drin steht, wird der Rest ignoriert.

Und ist die Versandkontrolle so denn jetzt gegeben? Oder fehlt da noch was?

Viele Grüße,
Kevin

Re: Kontaktformular

Verfasst: 03.01.2012 08:45
von gn#36
Die Prüfung für die Mailadresse ist so auf jeden Fall falsch, da ist ein Zeilenumbruch drin.

Deine Einrückung ist ziemlich unlesbar. Es sieht aber so aus, als würdest du die Parameterprüfung nur ausführen, wenn irgend ein Feld leer ist, das kann nicht Sinn der Sache sein. Dass ein einziges Zeichen in jedem Feld reicht ist daher logisch, denn die Prüfung ist ja quasi vollkommen unwirksam.

Re: Kontaktformular

Verfasst: 03.01.2012 12:36
von masterronnow
Hallo,

wobei die Prüfung der Mailadresse ja solange funktioniert, bis in das Feld "Nachricht" etwas eingegeben wird. Die Prüfung scheint also wirklich nur dann statt zu finden wenn mindestens ein Feld noch leer ist. Nur weiß ich jetzt nicht, wie ich das ändern kann.

Meinst du mit dem Zeilenumbruch einen Umbruch im Code oder wird dort einer erlaubt? Den Zeilenumbruch im Code habe ich erst einmal entfernt.

Viele Grüße,
Kevin

Re: Kontaktformular

Verfasst: 03.01.2012 22:57
von gn#36
Wie ich schon sagte führst du die Parameterprüfung nur aus, wenn irgend eines der Felder leer ist. Dann könntest du aber genausogut direkt eine Fehlermeldung ausgeben. Deine Prüfung liegt an der falschen Stelle. Du müsstest das in den else Zweig legen und dann wieder zur Bedingung machen, bevor du den Mailversand ausführst, also statt

Code: Alles auswählen

if(empty($x))
{
   if($bedingungen_erfuellt)
    {
        //tu nix
    }
}
else
{
    //Mail versenden
} 
sowas:

Code: Alles auswählen

if(empty($x))
{
   
}
else
{
    if($bedingungen_erfuellt)
    {
        //Mail versenden
    }
    else
    {
        //Fehlermeldung ausgeben, weil bedingungen nicht erfuellt
    }
} 
oder auch sowas:

Code: Alles auswählen

if(empty($x) || !$bedingungen_erfuellt)
{
   
}
else
{
        //Mail versenden
}  

Re: Kontaktformular

Verfasst: 19.01.2012 20:53
von masterronnow
Leider komme ich da nicht so ganz weiter, also ich habe jetzt folgendes:

Code: Alles auswählen

if(empty($_POST['Name']) OR empty($_POST['Mail']) OR empty($_POST['Nachricht']) OR empty($_POST['Betreff']))
{
      print "Bitte füllen Sie alle Pflichtfelder korrekt aus!\n";     
}
else
{
   if($bedingungen_erfuellt)
    {
    else{ 

      $Abs_Mail = $_POST['Mail'];
      $Abs_Name = $_POST['Name'];
      $Abs_Nachricht = $_POST['Nachricht'];
	  $Abs_Betreff = $_POST['Betreff']; 
      
      $Nachricht = "\nName: $Abs_Name\n\nBetreff: $Abs_Betreff\n\nEmail: $Abs_Mail\n\nNachricht:\n$Abs_Nachricht\n";
 
      
      $senden = mail($Mail, $Betreffs, $Nachricht,"From: $Abs_Mail");
 

     if($senden){ 
        print "Ihre Nachricht wurde erfolgreich an uns versandt.";
      }
 
      else { 
        print "Beim Senden der Mail ist leider etwas schief gelaufen.
        Versuchen Sie es später nocheinmal.";
      		}
    }
    else
    {
        //Fehlermeldung ausgeben, weil bedingungen nicht erfuellt
    }
} 
Doch was das if($bedingungen_erfuellt) und die Fehlermeldung angeht, weiß ich gerade leider nicht weiter, kann mir da vielleicht jemand helfen, das fertig zu kriegen?

Viele Grüße,
Kevin

Re: Kontaktformular

Verfasst: 20.01.2012 08:08
von gn#36
$bedingungen_erfuellt war nur ein Platzhalter, den du durch die richtige Prüfung der Parameter ersetzen solltest (wie du sie ja oben eingefügt hast). Oder du füllst das Ergebnis der echten Prüfungen in die Variable, geht natürlich auch.

Re: Kontaktformular

Verfasst: 22.01.2012 00:34
von masterronnow
Gut, es muss ja jetzt noch die Prüfung der einzigen Felder rein. Wo muss das hin? Durch was muss ich

Code: Alles auswählen

$bedingungen_erfuellt
ersetzen? Ich stehe derzeit leider etwas auf dem schlauch.

Wäre über jede Hilfe dankbar. Tut mir leid das ich soviel Frage, doch dies ist mein 1. etwas größeres PHP Projekt, dass ich komplett alleine programmiere.

Viele Grüße,
Kevin