Ankündigung

Einklappen
Keine Ankündigung bisher.

Formular in php

Einklappen

Neue Werbung 2019

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

  • Formular in php

    Hallo Allerseits!

    Seit kurzem hab ich angefangen mit PHP.
    Mein Lern Material besteht aus 1 x Buch und 6 Gute DVD ( dort erklärt man sehr gut was MYSQL etc sind )

    DVD inhalte:
    • 3 x PHP Lernern ( 23 STD lern material )
    • 1 x HTML5 & CSS Lernen (ü. 12 STD lern material )
    • 1 x Javascript Einführung ( 12.50 STD lern material
    • 1 x CSS 3 Lernen ( ü. 6 STD lern material


    diese Informationen soll euch dienen, mit was ich Lerne.
    bisher hab nur das PHP angeschaut ( HTML kenntnise sind vorhanden )

    So nun komm ich zu meiner eigentliche Frage zum Formular.

    Beispiel_formular_fuers_original.php ( von mir geschrieben. Gelernt durch / DVD)
    PHP-Code:

    <?php
    require_once('functionen.php');

            
    $email $_POST['mail'];



            if (isset ( 
    $_POST['anrede']) == "" or $_POST['nachname'] == "" or $_POST['vorname'] == "" or $_POST['str'] == "" or $_POST['plz'] == "" or $_POST['plz02'] == "" or $_POST['mail'] == "" or  $_POST['nachricht'] == ""  )
        {



    if  (isset  ( 
    $_POST['gesendet']) == "ja" )


                {
                    echo       
    '<p><span>Hinweis: Das Formular ist unvollständig. Bitte alle Felder Kontrollieren und nach korrigieren.</span></p>';
                }


    if   ( 
    $_POST['mail'] <> "")

            {
                if   ( 
    is_mail ($email) == false )

                {
                    echo 
    "<p><span>Hinweis: E-Mail Adresse ist Ung&uuml;ltig! Bitte Kontrollieren und nach korrigieren.</span></p>";
                    
    $_POST['mail'] = "";
                }
            }



            echo            
    '<br /><br /><br />';



                    
    //Formular Felder Beginn
                            // Formular Beginn

            
    echo    '<form method="POST" action="Beispiel-formular-fuers-original.php">';

            echo      
    '<h1>Kontakt:</h1><br />';
            echo      
    'Felder mit * m&uuml;ssen angegeben werden.<br />';

            echo       
    '<br />';


            echo 
    '<label>Anrede: *</label>';
            echo 
    '<select name="anrede" id="anrede">
                  <option value="Herr">Herr     </option>
                  <option value="Frau">Frau     </option></select><br />'
    ;

            echo 
    '<br />';

            echo 
    '<label>Nachname: *</label>';
            echo 
    '<input type="text" name="nachname" value="" /><br />';

            echo 
    '<label>Vorname: *</label>';
            echo 
    '<input type="text" name="vorname" value=""/><br />';

            echo 
    '<label>Firma:</label>';
            echo 
    '<input type="text" name="firma" value=""/><br />';

            echo 
    '<label>Stra&szlig;e / Nr: *</label>';
            echo 
    '<input type="text" name="str" value=""/><br />';

            echo 
    '<label>PLZ / Ort: *</label>';
            echo 
    '<input class="small" type="text" name="plz" value=""/>
                  <input  class="medium"type="text" name="plz02" value=""/><br />'
    ;

            echo 
    '<label>Telefon:</label>';
            echo 
    '<input class="small" type="text" name="tel" value="+41"/>
                  <input  class="medium"type="text" name="tel02" value=""/><br />'
    ;

            echo 
    '<label>E-Mail: *</label>';
            echo 
    '<input type="text" name="mail" value=""/><br />';

            echo 
    '<label>Nachricht: *</label>';
            echo 
    '<textarea name="nachricht" id="nachricht" rows="20" cols="42"></textarea>';

            echo 
    '<br />';
            echo 
    '<br />';

            echo 
    '<input type="hidden" name="gesendet" value="ja"/>';
            echo 
    '<input class="submitbutton" type="submit" value="Absenden"/>';

    echo 
    '</form>';
        
    //Formular Felder END

                    // Formular END
            
    }
                else
             {
                      echo  
    '<h1>Vielen dank...</h1>';
                      echo  
    '<p>Vielen Dank f&uuml;r Ihre Nachricht</p>';


             }

                                
    $emfaenger "@gmx.ch";
                                
    $betreff "Kontakt Formular von beispiel_formular_fuers_original." ;
                                
    $inhalvonmail "Anfrage von Website: " $_POST['nachricht'];
                                
    $inhalvonmail .= "  |  Firma: " .$_POST['firma']. "  |  Anrede: " $_POST['anrede']. "  |  Nachname: " $_POST['nachname']. "  |  Vorname:"$_POST['vorname']."  |  PLZ: "$_POST['plz']."  |  PLZ: "$_POST['plz02']."  |  Strasse: ".$_POST['str']."  |  TEL: ".$_POST['tel']."  |  TEL: ".$_POST['tel02']."  |  E-Mail: " .$_POST['mail'];


                                
    mail ($emfaenger$betreff$inhalvonmail,"from: email\r\n");





    ?>
    REGEX Codierung ( für E-Mail prüfen )
    PHP-Code:
      <?php
         
    function is_mail ($email)
        {
            
    $searchmuster "/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[a-zA-Z]{2,4}$/";
            
    $ergebnis preg_match ($searchmuster$email);
            return (
    $ergebnis 0);
        }
    Nur hab ich ein problem und zwar:

    was mir noch nicht so klar ist wegen meine Fehlermeldungen

    PHP-Code:
        echo "<p><h2>Hinweis: E-Mail Adresse ist Ung&uuml;ltig! Bitte Kontrollieren und nach korrigieren.</h2></p>"

    Wenn ich das Formular ausfülle mit einem Buchstabe z.b E ( Jedes feld )
    dann kann ich bei Absenden klicken und es geht weiter. Mit dem text ( Vielen dank..... )

    mir wäre lieber wenn:

    Nachname (ausgefüllt)
    Vorname ( ausgefüllt)
    E-Mail (nicht korrekt = hallo@----welt.mobi ) ( Dass dann der Regex aktiviert wird ) & dann die Meldung erscheint Email ist ungültig


    ich hoffe ihr versteht was ich damit sagen will.

    Grüsse

  • #2
    Zitat von johalus Beitrag anzeigen
    ich hoffe ihr versteht was ich damit sagen will.
    Ehrlich gesagt: nicht wirklich.


    Ich sehe nur, dass du noch so einige Fehler in deinem Script hast. Zum Beispiel die folgenden:

    PHP-Code:
    if (isset ( $_POST['anrede']) == "" ... 
    Was nun? isset() oder == ""?

    PHP-Code:
    $searchmuster "/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[a-zA-Z]{2,4}$/"
    Was genau soll den A-z machen? Ich kenne a-z, A-Z und a-zA-Z
    [a-zA-Z]{2,4} ist nicht mehr aktuell. Eine Adresse mit .berlin würde dann zum Beispiel nicht mehr erlaubt sein.


    Nebenbei: benutze doch für PHP das nächste Mal bitte die PHP-Tags ([ PHP ]...[ /PHP ] natürlich ohne Leerzeichen).


    MFG Connar

    Kommentar


    • #3
      Oh das mit dem Isset und == ist mir nicht aufgefallen das ich dies nicht so machen darf.

      ich wusste nur das Isset eine ( prüfungs funktion ) hat.

      und beim Regex..
      ja das wusste ich auch nicht das ich eine ältere version benutze
      zwar hab ich im internet schon durchforstet ( gegooglet ) doch da kamen lauter Regex zeug raus, was ich kaum verstandt oder nicht wusste was die dort erklärten.

      edit: vielleicht hilft es wenn ich es euch via Fotos erkläre? weil via text zu erklären ist sehr schwierig.

      Foto

      Kommentar


      • #4
        Ach, jetzt versteh ich, was du willst.

        Du überprüfst einfach an der falschen Stelle, ob die E-Mail-Adresse valide ist. Entweder, du nimmst es direkt in deine erste (zugegeben recht lange) if()-Abfrage auf, oder du musst, nachdem du die E-Mail-Validierung durchgeführt hast, noch einmal überprüfen, ob alle Angaben richtig sind.
        Eine Möglichkeit hierfür wäre es, eine Variable zu definieren, die nur angibt, ob alle benötigten Felder valide sind und die auf false zu setzen, falls dem nicht so ist. Kurzer Auszu dazu:

        PHP-Code:
        if(isset($_POST["gesendet"]))
        {
            
        $isValid true;
            
            if(!isset(
        $_POST["anrede"]) || $_POST["anrede"] == "")
                
        $isValid false;
            if(!isset(
        $_POST["nachname"]) || $_POST["nachname"] == "")
                
        $isValid false;
            
        // ...
            
        if(!isset($_POST["mail"]) || $_POST["mail"] == "" || !is_mail($_POST["mail"]))
                
        $isValid false;
            
            if(
        $isValid)
            {
                
        // Alle Felder ausgefüllt -> Mail versenden
            
        } else
            {
                
        // Fehlendes Feld -> Formular erneut ausgeben
            
        }


        MFG Connar

        Kommentar


        • #5
          Du sagst ich hätte eine recht lange if abfrage. gäbe es den eine alternative für eine kürzere ?

          EDIT: verzeih mir wenn ich ein wenig langsam bin und es noch nicht so recht versteh.

          Kommentar


          • #6
            Siehe meinen letzten Post. Du könntest sie eben in die einzelnen Bestandteile zerlegen, um auf die einzelnen Felder zu prüfen statt auf alle gleichzeitig.


            MFG Connar

            Kommentar


            • #7
              So nun gut ich ahb es jetzt nachgebaut.

              (wurde ersetzt durch)
              PHP-Code:
                      if (isset ( $_POST['anrede']) == "" or $_POST['nachname'] == "" or $_POST['vorname'] == "" or $_POST['str'] == "" or $_POST['plz'] == "" or $_POST['plz02'] == "" or $_POST['mail'] == "" or  $_POST['nachricht'] == ""  
              (das hier)
              PHP-Code:
              if  (isset  ( $_POST['gesendet']) == "ja" )


                  {

                  
              $isValid true;

                  if(!isset(
              $_POST['anrede']) || $_POST['anrede'] == "")
                      
              $isValid false;
                  if(!isset(
              $_POST['nachname']) || $_POST['nachname'] == "")
                      
              $isValid false;
                  if(!isset(
              $_POST['vorname']) || $_POST['vorname'] == "")
                      
              $isValid false;
                  if(!isset(
              $_POST['str']) || $_POST['str'] == "")
                      
              $isValid false;
                  if(!isset(
              $_POST['plz']) || $_POST['plz'] == "")
                      
              $isValid false;
                  if(!isset(
              $_POST['plz02']) || $_POST['plz02'] == "")
                      
              $isValid false;
                  if(!isset(
              $_POST['nachricht']) || $_POST['nachricht'] == "")
                      
              $isValid false;

                  if(!isset(
              $_POST['mail']) || $_POST['mail'] == "" || !is_mail($_POST['mail']))
                      
              $isValid false;


                  if(
              $isValid
              ist das korrekt was ich da mache?

              Kommentar


              • #8
                Ja, das überprüft dir nun eben, ob die ganzen Felder einen Wert enthalten und bei der E-Mail-Adresse zusätzlich, ob diese valide ist.
                Musst du also nur noch die Ausgabe hinzufügen und dann sollte es funktionieren.


                MFG Connar

                Kommentar


                • #9
                  Die Abfrage auf vorhanden und leer würde ich über eine "WhiteList" kapseln
                  PHP-Code:
                  $expectedKeys = array( 'anrede''nachname''vorname''str''plz''plz02''nachricht''email' );

                  $isValide false;

                  foreach( 
                  $expectedKeys as $keyName ) {
                      if( !isset(
                  $_POST[$keyName]) || empty(trim($_POST[$keyName])) ) {
                          
                  $isValide false;
                          break;
                      }

                  Ob die E-Mail-Adresse gültig ist kannst Du besser über filter_var() mit dem optionalen Parameter FILTER_VALIDATE_EMAIL prüfen.

                  Kommentar


                  • #10
                    jä... hm.. da hab ich aber was anders gelernt und zwar das filter_var() nicht das beste sei, denn laut meinen unterlagen wäre es immer noch am besten wenn man mit Regex arbeiten würde. (ist sicherer als mit filter_var)

                    obs wirklich so ist, kann ich nicht bestätigen ( zu wenig erfahrung ) um zu wissen was jetzt besser ist

                    Kommentar


                    • #11
                      Gabs da nicht erst einen Thread dazu ..? Da gings dann aber glaube ich um die Umlaute in E-Mail-Adressen, die filter_var() nicht zulässt ^^
                      Vorteil bei filter_var() zum Überprüfen von E-Mail-Adressen ist hier wohl, dass das schon ein vorgefertigtes Muster ist. Ein selbstgeschriebenes ist meistens weniger getestet und könnte bestimmte Sachen nicht berücksichtigen.
                      Aber ich glaube das ist ein Punkt, an dem sich verschiedene Geister scheiden. Für dich wird wohl erstmal wichtig sein, eine funktionierende Variante zu haben, um deine PHP-Kenntnisse noch weiter auszubauen.


                      MFG Connar

                      Kommentar


                      • #12
                        Zitat von Arne Drews Beitrag anzeigen
                        Die Abfrage auf vorhanden und leer würde ich über eine "WhiteList" kapseln
                        Die Idee ist gut, die Ausführung leider nicht.
                        1.
                        PHP-Code:
                        ...
                        $isValide false;
                        ...
                                
                        $isValide false
                        Da bleibt falsch falsch.
                        2.
                        PHP-Code:
                        empty(trim($_POST[$keyName]) 
                        http://php.net/empty
                        empty() only checks variables as anything else will result in a parse error. In other words, the following will not work: empty(trim($name)).

                        Kommentar


                        • #13
                          Tut mir echt leid wenn ich mich gerade ahnungslos darstelle... habs wohl noch nicht ganz begriffen...
                          Zitat von Connar
                          Musst du also nur noch die Ausgabe hinzufügen und dann sollte es funktionieren.
                          Die kenntnisse die ich habe, sind wie gesagt minimal

                          Kommentar


                          • #14
                            Naja, du hattest ja die erneute Ausgabe deines Formulars, bzw. die Erfolgsnachricht bereits, musst sie also nur noch an der richtigen Stelle des Codes einfügen.

                            PHP-Code:
                            if($isValid)
                            {
                                
                            // Alle Felder ausgefüllt -> Mail versenden
                            } else
                            {
                                
                            // Fehlendes Feld -> Formular erneut ausgeben

                            Wie die Kommentare bereits sagen, konnte das Formular oben erfolgreich validiert werden und du kannst dort deine E-Mail versenden. Unten hingegen gab es ein Fehler und du musst das Formular erneut ausgeben.


                            MFG Connar

                            Kommentar


                            • #15
                              Also wenn ich es also richtig verstanden habe dann sollte es so aussehen:

                              PHP-Code:
                              if  (isset  ( $_POST['gesendet']) == "ja" )


                                  {

                                  
                              $isValid true;

                                  if(!isset(
                              $_POST['anrede']) || $_POST['anrede'] == "")
                                      
                              $isValid false;
                                  if(!isset(
                              $_POST['nachname']) || $_POST['nachname'] == "")
                                      
                              $isValid false;
                                  if(!isset(
                              $_POST['vorname']) || $_POST['vorname'] == "")
                                      
                              $isValid false;
                                  if(!isset(
                              $_POST['str']) || $_POST['str'] == "")
                                      
                              $isValid false;
                                  if(!isset(
                              $_POST['plz']) || $_POST['plz'] == "")
                                      
                              $isValid false;
                                  if(!isset(
                              $_POST['plz02']) || $_POST['plz02'] == "")
                                      
                              $isValid false;
                                  if(!isset(
                              $_POST['nachricht']) || $_POST['nachricht'] == "")
                                      
                              $isValid false;

                                  if(!isset(
                              $_POST['mail']) || $_POST['mail'] == "" || !is_mail($_POST['mail']))
                                      
                              $isValid false;


                                  if(
                              $isValid)

                                  {
                                      
                              // Alle Felder ausgefüllt -> Mail versenden
                                  
                              }
                                  else



                                          {
                                              echo       
                              '<p><span>Hinweis: Das Formular ist unvollständig. Bitte alle Felder Kontrollieren und nach korrigieren.</span></p>';
                                          }


                              if   ( 
                              $_POST['mail'] <> "")

                                      {
                                          if   ( 
                              is_mail ($email) == false )

                                          {
                                              echo 
                              "<p><span>Hinweis: E-Mail Adresse ist Ung&uuml;ltig! Bitte Kontrollieren und nach korrigieren.</span></p>";
                                              
                              $_POST['mail'] = "";
                                          }
                                      }

                                  {
                                      
                              // Fehlendes Feld -> Formular erneut ausgeben
                                  
                              }

                              Kommentar

                              Lädt...
                              X