Kontaktformular

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
masterronnow
Mitglied
Beiträge: 145
Registriert: 11.12.2006 15:28
Wohnort: Berlin
Kontaktdaten:

Kontaktformular

Beitrag 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!
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Kontaktformular

Beitrag 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.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
masterronnow
Mitglied
Beiträge: 145
Registriert: 11.12.2006 15:28
Wohnort: Berlin
Kontaktdaten:

Re: Kontaktformular

Beitrag 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
Benutzeravatar
masterronnow
Mitglied
Beiträge: 145
Registriert: 11.12.2006 15:28
Wohnort: Berlin
Kontaktdaten:

Re: Kontaktformular

Beitrag 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
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Kontaktformular

Beitrag 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.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
masterronnow
Mitglied
Beiträge: 145
Registriert: 11.12.2006 15:28
Wohnort: Berlin
Kontaktdaten:

Re: Kontaktformular

Beitrag 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
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Kontaktformular

Beitrag 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
}  
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
masterronnow
Mitglied
Beiträge: 145
Registriert: 11.12.2006 15:28
Wohnort: Berlin
Kontaktdaten:

Re: Kontaktformular

Beitrag 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
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Kontaktformular

Beitrag 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.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
masterronnow
Mitglied
Beiträge: 145
Registriert: 11.12.2006 15:28
Wohnort: Berlin
Kontaktdaten:

Re: Kontaktformular

Beitrag 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
Antworten

Zurück zu „Coding & Technik“