Ankündigung

Einklappen
Keine Ankündigung bisher.

Was stimmt nicht mit meinem Code?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Was stimmt nicht mit meinem Code?

    Hallo,
    ich habe erst vor kurzem mit dem Programmieren begonnen, habe aber jetzt schon viel freude daran. Zurzeit abrbeite ich an einem kleinen Projekt welches ein Formular enthält das ein potentieller Kunde ausfüllen würde und das mir die eingetragenen Daten beim absenden per Email geschickt wird. Leider gibt es einige Probleme damit.
    1. werden die Daten in der Email ohne Leerzeichen angzeigt
    2. werden die Daten von 2 meiner 3 Drop-down Listen nicht übermittelt, die Radio daten übrigens auch nicht
    3. soll eine Email an den Kunden geschickt werden, als ich es aber mit meiner Email probiert habe gab es eine Fehlermeldung da die Email an @gmail.con anstelle von @gmail.com gesendet wurde, wie kommt das?

    PHP-Code:
        <?php
        
    if(isset($_POST["submit"])){
          
    mail("sharon.dobrin@dein-lernplan.de ""Order"'Vorname:'.$_POST["vorname"]++.'Nachname:'.$_POST["nachname"]++.'Email:'.$_POST["email"]++.'Tel.:'.$_POST["telnum"]++.'Bundesland:'.$_POST["bundesland"]++.'Jahrgang:'.$_POST["jahrgang"]++.
          
    'Nächster Abschluss'.$_POST["abschluss"]++.'1. Leistungskurs'.$_POST["lk1"]++.'2. Leistungskurs'.$_POST["lk2"]++.'3. Prüfungsfach'.$_POST["pf3"]++.'4. Prüfungsfach'.$_POST["pf4"]++.'5. Prüfungskomponente'.$_POST["pk5"]++.'Aktivitäten'.$_POST["aktivitäten"]++.
          
    'Produkt:'.$_POST["produkt"]);
          
    mail($_POST["email"], "Bestellbestätigung"'Vielen Dank für ihre Bestellung')
          
    ?>
          <h1 style="color: #8A084B;">Deine Bestellung wurde abgesendet!</h1>
          <?php
        
    }
        
    ?>

        <form action="order.php" method="post">
        <div id="order">
          <input type="text" name="vorname" placeholder="Vorname" required="required">
          <input type="text" name="nachname" placeholder="Nachname" required="required">
          <br>
          <input type="email" name="email" placeholder="Email-Adresse" required="required">
          <input type="tel" name="telnum" placeholder="Telefon/Handy">

          <br>
          <div class="drop">
          <form action="select.html">
            <select required name="bundesland" size="1" required="required">
              <option value="" disabled selected>Bundesland</option>
             <option value="bawü">Baden-Württenmberg</option>
             <option value="bay">Bayern</option>
             <option value="ber">Berlin</option>
             <option value="bran">Brandenburg</option>
             <option value="brem">Bremen</option>
             <option value="ham">Hamburg</option>
             <option value="hess">Hessen</option>
             <option value="meckpom">Mecklenburg-Vorpommern</option>
             <option value="niesa">Niedersachsen</option>
             <option value="nrw">Nordrhein-Westfalen</option>
             <option value="reipf">Rheinland-Pfalz</option>
             <option value="saa">Saarland</option>
             <option value="sach">Sachsen</option>
             <option value="sachan">Sachsen-Anhalt</option>
             <option value="schlehol">Schleswig-Holstein</option>
             <option value="tür">Thüringen</option>
            </select>
          </form>
          <!--
          <form action="select.html">
            <select name="schulform" size="1">
              <option>Schulform</option>
             <option>Gesamtschule (mit integrierter Oberstufe)</option>
             <option>Hauptschule</option>
             <option>Realschule</option>
             <option>Gymnasium</option>
            </select>
          </form>
          <br>
        -->
          <form action="select.html">
            <select required name="jahrgang" size="1" required="required">
             <option value="" disabled selected>Jahrgang</option>
             <option value="7">7.</option>
             <option value="8">8.</option>
             <option value="9">9.</option>
             <option value="10">10.</option>
             <option value="11">11.</option>
             <option value="12">12.</option>
             <option value="13">13.</option>
            </select>
          </form>
        <br>
        <form action="select.html">
          <select required name="abschluss" size="1">
           <option value="" disabled selected>Nächster Abschluss</option>
           <option value="bbr">Hauptschulabschluss/BBR</option>
           <option value="ebbr">Erweiterter Hauptschulabschluss/eBBR</option>
           <option value="msa">Mittlerer Schulabschluss/MSA</option>
           <option value="fachabi">Fachhochschulreife/Fach Abi</option>
           <option value="abi">Hochschulreife/Abi</option>
          </select>
        </form>
      </div>
          <br>
          <h3>Falls du grade Abitur machst nenn uns bitte deine Prüfungsfächer</h3>
          <input type="text" name="lk1" placeholder="1. Leistungskurs">
          <input type="text" name="lk2" placeholder="2. Leistungskurs">
          <br>
          <input type="text" name="pf3" placeholder="3. Prüfungsfach">
          <input type="text" name="pf4" placeholder="4. Prüfungsfach">
          <input type="text" name="pk5" placeholder="5. Prüfungskomponente">
          <br>

          <br>
          <h3></h3>
          <textarea name="aktivitäten" rows="3" placeholder="Nenne uns bitte mögliche Aktivitäten oder ähnliches samt Zeiten die in deinem Plan berücksichtigt werden sollten"></textarea>
          <br>
          <form>

              <h3>Welches Podukt willst du?</h3>
              <input type="radio" name="produkt" id="14-tage" value="14-tage">
              <label for="14-tage">Regulär für 5€ mit 14 Tagen Bearbeitungsgarantie</label>
              <input type="radio" name="produkt" id="1-jahr" value="1-jahr">
              <label for="1-jahr">Premium für 10€ mit einem Jahr Bearbeitungsgarantie</label>

          </form>
          <br>
          <input id="submit" type="submit" name="submit" value="Kostenpflichtig Bestellen">
        </div>
        </form>
        </div>

  • #2
    Puh, relativ viel (Bezug auf Deinen Threadtitel).

    1. Validier Deinen HTML-Code. Da ist ganz, ganz viel nicht korrekt. Dafür gibt es den w3-Validator (https://validator.w3.org/)

    2. Was tun die ++ nach jedem POST-Feld?

    3. Betreib Debugging. Mit var_dump($_POST) findest du heraus was Dein Formular überträgt und was nicht. Vielleicht findest du den/die Fehler selbst?

    4. Benutze nicht mail(). Verwende eine Mailerklasse wie z.b. https://github.com/PHPMailer/PHPMailer. mail() scheint simpel, ist es aber nicht. Du riskierst so, dass Deine Mails nicht zuverlässig ankommen.

    Kommentar


    • #3
      5. verwende label-Elemente, das placeholder-Attribut ersetzt diese nicht.

      Das einige Werte nicht richtig in der Mail landen hängt vermutlich mit den ++ sowie dem fehlerhaften HTML-Code (Formulare dürfen nicht verschachtelt werden) zusammen, aber das schrieb Jonas ja schon mit den Punkten 1 und 2.

      Kommentar


      • #4
        werden die Daten von 2 meiner 3 Drop-down Listen nicht übermittelt, die Radio daten übrigens auch nicht
        Du gehst mit dem form Element falsch um.

        Du brauchst nur eins, dass alle Formularelemente (input,select,textarea...) umschliesst.
        [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

        Kommentar


        • #5
          Noch als Ergänzung zu schon gesagtem
          PHP-Code:
          if(isset($_POST["submit"])){ 
          Du prüfst hier ob submit übermittelt wurde, also der Schalter zum absenden des Formulars gedrückt wurde.
          Ob dann weitere Daten kommen überprüfst jedoch nicht. Was machst du wenn die zu erwarteten Felder, wie "vorname"gar nicht übermittelt wurden?

          Sicher, du verwendest reguired als Attribut bei den Input Elementen, aber getreu dem Grundsatz "Traue niemals Benutzereingaben", solltest du diese vor Verwendung prüfen, ob sie ankommen und ob sie valide sind, also Länge, Typ und erlaubte Zeichen korrekt sind.

          Kommentar

          Lädt...
          X