Sebastian U.: Problem mit HTML Kontaktformular

Guten Tag ,

also gleich vorweg, ich bin ein Laie im Bereich HTML5. Die Homepage basiert auf HTML5.

Mein Problem lautet folgendermaßen, ich habe bei meiner vorgefertigten Homepage ein Kontaktformular. Dort kann man den Absender Namen, die eMail, den Nachrichttypen und die Nachricht selbst eintragen und abschicken. Nur ich bekomm das nicht soweit hin das ich den Mailer einrichte? Ich habe schon nachgeforscht, man braucht dafür PHP, aber ich weiß nicht wie ich mein Kontaktformular mit dem PHP Script verbinde bzw. dem Script sage, das er den eingegebenen Text vom Kontaktformular nehmen soll und verschicken?

Ich bin euch echt über jede Hilfe dankbar,

  1. @@Sebastian U.

    Nur ich bekomm das nicht soweit hin das ich den Mailer einrichte? Ich habe schon nachgeforscht, man braucht dafür PHP,

    aber ich weiß nicht wie ich mein Kontaktformular mit dem PHP Script verbinde

    Beim Absenden des Forumlars wird die in dessen action-Attribut angegebene URL aufgerufen und die eingegenben Werte wie im method-Attribut angegeben per GET (Default) bzw. POST übertragen …

    bzw. dem Script sage, das er den eingegebenen Text vom Kontaktformular nehmen soll und verschicken?

    … die dann für PHP in $_GET bzw. $_POST oder $_REQUEST zur Verfügung stehen. Zum Versenden von Mail stellt PHP eine Funktion bereit.

    Aber ganz ehrlich: Ein Kontaktformular ist nichts, was du mit deinem jetzigen Kenntnisstand selbst implementieren solltest. Zu groß sind die möglichen Sicherheitslücken. Dass das Ding von Unbefugten zum Versenden von Spam missbrauct wird, ist da noch eine geringe Sorge.

    Nimm ein fertiges Kontaktformular aus guter Quelle!

    LLAP 🖖

    --
    Ist diese Antwort anstößig? Dann könnte sie nützlich sein.
  2. Guten Tag ,

    [..] man braucht dafür PHP, aber ich weiß nicht wie ich mein Kontaktformular mit dem PHP Script verbinde bzw. dem Script sage, das er den eingegebenen Text vom Kontaktformular nehmen soll und verschicken?

    Bring die Seite, die das Formular zum Browser schickt, dazu, einen POST zu verarbeiten und dann schauen wir mal weiter. So könnten wir das anfangen (Pseudocode):

    if REQUEST_METHOD == 'GET'
        Formular ausgeben
    else if REQUEST_METHOD == 'POST'
        Eingaben prüfen, Maildatei erstellen, 
        Mail senden, Erfolgsmeldung ausgeben
    
    1. Guten Tag ,

      [..] man braucht dafür PHP, aber ich weiß nicht wie ich mein Kontaktformular mit dem PHP Script verbinde bzw. dem Script sage, das er den eingegebenen Text vom Kontaktformular nehmen soll und verschicken?

      Bring die Seite, die das Formular zum Browser schickt, dazu, einen POST zu verarbeiten und dann schauen wir mal weiter. So könnten wir das anfangen (Pseudocode):

      if REQUEST_METHOD == 'GET'
          Formular ausgeben
      else if REQUEST_METHOD == 'POST'
          Eingaben prüfen, Maildatei erstellen, 
          Mail senden, Erfolgsmeldung ausgeben
      

      Danke für die Antworten,

      Also hier nochmal der Code vom Kontaktformular

      <form id="contact-form">
                      <div class="row">
                          <div class="col-md-6">
                              <div class="form-group">
                                  <label for="name">
                                      Name</label>
                                  <input type="text" class="form-control" id="name" placeholder="Name / Firma" required="required" />
                              </div>
                              <div class="form-group">
                                  <label for="email">
                                      Email Addresse</label>
                                  <div class="input-group">
                                      <span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span>
                                      </span>
                                      <input type="email" class="form-control" id="email" placeholder="eMail Adresse" required="required" /></div>
                              </div>
                              <div class="form-group">
                                  <label for="subject">
                                      Subject</label>
                                  <select id="subject" name="subject" class="form-control" required>
                                      <option value="na" selected="">Auswählen:</option>
                                      <option value="service">Kundensupport</option>
                                      <option value="suggestions">Feedback</option>
                                      <option value="product">Anfrage</option>
                                  </select>
                              </div>
                          </div>
                          <div class="col-md-6">
                              <div class="form-group">
                                  <label for="name">
                                      Nachricht</label>
                                  <textarea name="message" id="message" class="form-control" rows="9" cols="25" required
                                      placeholder="Nachricht"></textarea>
                              </div>
                          </div>
                          <div class="col-md-12">
                              <button type="submit" class="btn btn-skin pull-right" id="btnContactUs">
                                  Abschicken</button>
                          </div>
                      </div>
                      </form>
      

      Das heißt ich muss wenn man auf abschicken klickt, auf das PHP Script verweisen?

      1. Moin,

        Das heißt ich muss wenn man auf abschicken klickt, auf das PHP Script verweisen?

        Bitte vermeide TOFU (oder hier FOTU oder TUFO)

        als nöchste empfehle ich dir das Studium der folgende selfhtml-Seite: http://wiki.selfhtml.org/wiki/Form

        Dort findest du Informationen darüber wo du was eintragen musst, damit das Formular an ein bestimmtes Ziel abgesendet wird. Wenn du dies durchgearbeitet hast, und weitere Fragen hast, kannst du gern hier wieder nacgfragen.

        Gruß Bobby

        --
        -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <- ### Henry L. Mencken ### -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <- ### Viktor Frankl ### ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
        1. Hallo,

          Das habe ich nun erledigt, beim Druck auf den Abschicken Button verweise ich nun auf die PHP Datei! funktioniert super danke. ich habe mir eine vorgefertigte PHP runtergeladen, die beinhaltet folgendes:

          <?php
          
          $name = $_POST["Name"];
          $subject = $_POST["Subject"];
          $message = $_POST["Message"];
          $from = $_POST["Email"];
          
          // remove the backslashes that normally appears when entering " or '
          $name = stripslashes($name);
          $message = stripslashes($message);
          $subject = stripslashes($subject);
          $from = stripslashes($from);
          
          $to_address = "some.one@example.org";
          
          // Check to see if a message was recieved
          if(isset($message) and $message!="") {
              // send the message and show this page
              mail($to_address, 'Online Form: '.$subject, $_SERVER['REMOTE_ADDR']."\n\nName: ".$name."\n\n".$message, "From: $from");
          } else {
              echo "no variables received, this page cannot be accessed directly";
              exit;
          }
          ?>
          <!DOCTYPE html>
          <html lang="de">
              <head>
                  <meta charset="utf-8">
                  <title>Contact Form - Thank you</title>
              </head>
              <body>
                  <p>Danke für Ihre Nachricht.</p>
              </body>
          </html>
          
          

          Jetzt müsste ich irgendwie die Daten weiterreichen ? und wo trage ich den SMTP Server ein?

          Danke lg

          1. Hallo

            ich habe mir eine vorgefertigte PHP runtergeladen, die beinhaltet folgendes:

            <?php
            
            /* bla */
            
            // Check to see if a message was recieved
            if(isset($message) and $message!="") {
                // send the message and show this page
                mail($to_address, 'Online Form: '.$subject, $_SERVER['REMOTE_ADDR']."\n\nName: ".$name."\n\n".$message, "From: $from");
            } else {
                echo "no variables received, this page cannot be accessed directly";
                exit;
            }
            ?>
            

            Jetzt müsste ich irgendwie die Daten weiterreichen ? und wo trage ich den SMTP Server ein?

            Den SMTP-Server trägst du nirgends ein. Der ist normalerweise in der Konfiguration von PHP angegeben und die Funktion mail, die du benutzt, greift automatisch auf diese Angaben zurück.

            Tschö, Auge

            --
            Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
            Terry Pratchett, „Gevatter Tod“
          2. Tach!

            funktioniert super danke. ich habe mir eine vorgefertigte PHP runtergeladen, die beinhaltet folgendes:

            $name = $_POST["Name"]; $subject = $_POST["Subject"]; $message = $_POST["Message"]; $from = $_POST["Email"];

            Unnötiges Umkopieren von Variablen in Variablen.

            // remove the backslashes that normally appears when entering " or ' $name = stripslashes($name); $message = stripslashes($message); $subject = stripslashes($subject); $from = stripslashes($from);

            Das Script ist uralt. In aktuellen PHP-Versionen ist das verantwortliche Feature namens Magic Quotes bereits beerdigt worden.

            $to_address = "some.one@example.org";

            // Check to see if a message was recieved if(isset($message) and $message!="") { // send the message and show this page mail($to_address, 'Online Form: '.$subject, $_SERVER['REMOTE_ADDR']."\n\nName: ".$name."\n\n".$message, "From: $from");

            Und dann einfach so die Nutzereingabe direkt in die From-Header-Zeile eingefügt, auf dass die Spam-Industrie leichtes Spiel hat, sich über einen einfachen Zeilenumbruch in den From-Daten weitere Headerzeilen (wie Cc oder Bcc) selbst generieren kann.

            Damit wird deine Webseite Teil des weltweiten Spam-Problems werden. Soll das nicht passieren, such dir lieber ein Script, das diese Problematik berücksichtigt.

            In unserem Wiki ist beim Thema Kontextwechsel auch die E-Mail berücksichtigt. Allerdings benötigst du dazu ein paar generelle PHP-Kenntnisse, um die dortigen Beispiele mit deinen Bedürfnisse zu verbinden.

            dedlfix.

      2. Das heißt ich muss wenn man auf abschicken klickt, auf das PHP Script verweisen?

        Zum Verständnis: Dein Formular ist das PHP Script. Es kennt zwei Zustände:

        1. das <form method="POST"> ... </form> wird zum Browser geschickt. Das macht Dein Script bei Request-Method GET und wie Du siehst, hat das <form> kein action-Attribute. Daher wird beim POST der zweite Zustand erreicht, siehe da:

        2. im Array $_POST liegen die Eingaben, prüfen und weg damit.

        Erstelle eine 'mail.php' und bau erstmal das Grundgerüst da rein. Zum Testen genügt im POST-Zweig zunächst ein die("aha, submit geklickert.") und wenn Du das hast, melde Dich wieder. pl

        1. Moin,

          Erstelle eine 'mail.php' und bau erstmal das Grundgerüst da rein. Zum Testen genügt im POST-Zweig zunächst ein die("aha, submit geklickert.") und wenn Du das hast, melde Dich wieder. pl

          das ist schon viel zu hoch gegriffen.... hier fehlts an den grundlegendsten Grundlagen... ;)

          Gruß Bobby

          --
          -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <- ### Henry L. Mencken ### -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <- ### Viktor Frankl ### ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
          1. funktioniert schon! :)

            alles gut, danke für eure Hilfe

          2. Moin,

            Erstelle eine 'mail.php' und bau erstmal das Grundgerüst da rein. Zum Testen genügt im POST-Zweig zunächst ein die("aha, submit geklickert.") und wenn Du das hast, melde Dich wieder. pl

            das ist schon viel zu hoch gegriffen.... hier fehlts an den grundlegendsten Grundlagen... ;)

            Aber irgendwo müssen wir doch verdammt noch mal anfangen ;)

            Ich meinte, sich über zwei Zustände einer URL im Klaren zu sein, ist doch mindestens genauso viel verlangt wie 2 URLs in die Internet Welt zu hecken, wo doch eine reichen würde was ich mit dem fehlenden action-Attribute andeuten wollte... pl

            1. Moin,

              Aber irgendwo müssen wir doch verdammt noch mal anfangen ;)

              Ja, beim action-Attribut des form-Elementes

              Ich meinte, sich über zwei Zustände einer URL im Klaren zu sein, ist doch mindestens genauso viel verlangt wie 2 URLs in die Internet Welt zu hecken, wo doch eine reichen würde was ich mit dem fehlenden action-Attribute andeuten wollte... pl

              Das ist eben schon zu kompliziert. POST und GET zu unterscheiden fällt vielen schwer... Und wenn du wüsstest was ich manchmal höre... Zum Beispiel "POST ist sicherer als GET"

              Da bekomme ich regelmäßig graue Haare (zu denen, die ich eh schon habe)

              Gruß Bobby

              --
              -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <- ### Henry L. Mencken ### -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <- ### Viktor Frankl ### ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
              1. Malzeit,

                Das ist eben schon zu kompliziert. POST und GET zu unterscheiden fällt vielen schwer... Und wenn du wüsstest was ich manchmal höre... Zum Beispiel "POST ist sicherer als GET"

                Naja, POST und GET sind sog. well known Methods. Tatsächlich kann ich meine Request-Methoden nennen wie ich will, solang ich Client- und Server-Anwendung selbst programmiere. Mehr Sicherheit gäbs mit SSL, und wer bei meinen Remote-Prozedure-Calls POST vermutet, liegt total daneben, weil ich eine Request-Method namens RUMPELSTILZ verwende und die auch kontrolliere ;)

                Und überhaupt: Wenn ich auf dem Server was Löschen will, muss meine Request-Methode nicht unbedingt DELETE heißen. Ich kann die auch ERASE nennen, REAPER oder PURGE. Und kann bei Jeder Request-Method eine Message-Body senden, auch bei GET (macht nur keiner).

                Einzig Wichtig ist der Wiedererkennungswert einst geschriebener Codes...

                Da bekomme ich regelmäßig graue Haare (zu denen, die ich eh schon habe)

                Da hilft regelmäßiges Schneiden und wir Ossies machen das sowieso alles selwer.

                pl ;)

                1. Moin,

                  Da hilft regelmäßiges Schneiden und wir Ossies machen das sowieso alles selwer.

                  och nö... Zum einen geh ich nur aller 6 Monate (maximal). Manchmal sind auch mehrere Jahre dazwischen und ich erfülle voll den Klischee-IT-ler.

                  Zum anderen war ich erst gestern beim Friseur gewesen... Obwohl ich Ossi bin, gönn ich mir den Luxus schneiden zu lassen... :p

                  Gruß Bobby

                  --
                  -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <- ### Henry L. Mencken ### -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <- ### Viktor Frankl ### ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
  3. @@Sebastian U.

    Mein Problem lautet folgendermaßen, ich habe bei meiner vorgefertigten Homepage ein Kontaktformular.

    Mit Kontaktformularen hab ich auch ein Problem: Ich kontaktiere den Seitenbetreiber lieber per Mail aus meinem eigenen Mailclient. Dann habe ich wenigstens eine Kopie dessen, was ich geschrieben habe.

    Auf die Webseite gehört also die Angabe der Mailadresse:

    <p>Kontaktieren Sie uns per <a href="kontakt@example.com">Mail an kontakt@example.com</a></p>
    

    Auch das Subject (Betreff) und den Mailtext kann man auf diese Weise vorausfüllen.

    Ein Kontaktformular kann man zusätzlich anbieten:

    <p>Kontaktieren Sie uns per <a href="kontakt@example.com">Mail an kontakt@example.com</a> oder mit nachfolgendem Formular:</p>
    <form >
    

    LLAP 🖖

    --
    Ist diese Antwort anstößig? Dann könnte sie nützlich sein.