Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Fragen zum Affenformular

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Fragen zum Affenformular

    nAbend zusammen,

    habe mich hier im Wiki bzw. über google bereits eingelesen, find das Wiki allerdings für mich nicht wirklich zweckmässig, da fehlen mir vielleicht noch zu viele Grundverständnisse.

    Habe folgenden Code in einer Test-File um dies dann für meine Bedürfnisse entsprechend auszubauen.
    PHP-Code:
    <?php
    if (isset($_POST["senden"]))
    {
    if (
    $_POST["vorname"] != 1)
    {
        echo 
    "Hallo";
    }
    else
    {
        echo 
    "Hello";
    }
    }
    ?>

    <form action="<?php echo htmlentities($_SERVER['SCRIPT_NAME']) ?>" method="post" >

    <p>Ihr Vorname:
    <input type="hidden" name="check" value="1">
    <input type="text" name="vorname" value="<?php echo $_POST["vorname"];?>"/>
    </p>

    <p>
    <input type="submit" name="senden" value="absenden" />
    </p>

    </form>
    Habe diesen Code, so ähnlich zumindest, in einer html-Datei.
    Hier wird mir im Textfeld der php-Code als Value ausgegeben.
    Soweit auch klar warum.

    In dem ein oder anderen Tut im Netz, unter anderem hier http://www.lit-web.de wird das Affenformular in einer php-Datei umgesetzt.

    Nun meine Frage:
    Kann ich dies auch in einer html-Datei realisieren? Von dem was ich gelesen habe sollte dies möglich sein. Nur fehlt mir der Ansatz wie ich meine zu prüfenden Felder die ich von der html an die php datei übergebe, wieder zurück an die html bekomme. lt. meinen Vorgaben wäre ich nämlich auf dieses html-Formular angewiesen, müsste ich aber noch mal prüfen. Zumal Typo3 bestimmt das auch als php verarbeiten kann.

    Danke

  • #2
    Nein das ist nicht möglich. Aus genau diesem Grund:
    Nur fehlt mir der Ansatz wie ich meine zu prüfenden Felder die ich von der html an die php datei übergebe, wieder zurück an die html bekomme.
    PHP Code ist nunmal nicht Teil des HTML Sprachraums. Und die Ausführung findet an ganz anderer Stelle statt.

    Kommentar


    • #3
      ok.
      welche alternative gäbe es dann, form-felder auf nur zahlen/buchstaben zukontrollieren bzw. pflichtfelder zu definieren? außer evtl. JS?

      Kommentar


      • #4
        Ohne serverseitige Programmierung gar keine. Oder ich verstehe Dein Problem nicht.

        Kommentar


        • #5
          eine form validierung geht ja auch über JS.
          Nur alleine schon, aus meiner Sicht und Verständnis, ist die serverseitige Validierung sinnvoller.

          Ist dann eigentlich soweit geklärt. Werde dann halt das Formular in eine php-Datei umbauen und dort dann mein Affenformular einbauen.

          Kommentar


          • #6
            Validierung mit preg_match

            Ich hoffe ich bekomme hier noch ne Antwort, wenn nicht mache ich ein Neues Thema auf.

            Hätte im Zusammenhang mit dem Affenformular noch eine Frage richtung Validierung.

            PHP-Code:
            $vname = strip_tags($_POST["vorname"]);
            if (isset($_POST["senden"]))
            {
            if (preg_match("[a-z ]",$vname))
            {
                echo "Nur Buchstaben";
            }
            else
            {
                echo "Hat nicht sollen sein";
            }
            }
            ?>

            <form action="<?php echo htmlentities($_SERVER['SCRIPT_NAME']) ?>" method="post" >

            <p>Ihr Vorname:
            <input type="hidden" name="check" value="1">
            <input type="text" name="vorname" value="<?php echo $_POST["vorname"];?>"/>
            </p>

            <p>
            <input type="submit" name="senden" value="absenden" />
            </form>
            Wenn ich das zu durchsuchenden Subject z.B. in einer Variablen hinterlege funzt das einwandfrei.

            Nur jetzt wo ich dies per POST übergebe bekomme ich meine Fehlermeldung "Hat nicht sollen sein".

            Warum ist das so?

            Kommentar


            • #7
              Naja dann laß dir mal _POST mit
              PHP-Code:
              echo "<pre>";var_dump($_POST);echo"</pre>"
              ausgeben und schau dir einfach an, bei welcher Überprüfung er meckert.

              ich wette, dir fällt der Fehler dann gleich auf

              gruß

              Kommentar


              • #8
                ja ok dann is klar.
                und wie bekomme ich das nun hin mit der validierung?
                die validierung ist mir echt noch ein rätsel.

                Kommentar


                • #9
                  In dem du Grundlagen lernst. Sorry aber eine bessere Antwort fällt mir da nicht ein.

                  Vieleicht hilft dir das ein wenig weiter. Lit-Web - Tutorials - PHP - PHP-Affenformular

                  Ich bin da eigentlich auf alle Feldtypen in der Formularvalidierung eingegangen.

                  Kommentar


                  • #10
                    hajo das mach ich die ganze woche schon.
                    aber muss ehrlich sagen, mit deinem tut komme ich überhaupt nicht weiter.

                    für mich, da ich eh noch blutiger anfänger bin, müsste da mehr schritt für schritt anleitungen rein und beispiele.

                    dann werde ich mal weiter basics lernen

                    Kommentar


                    • #11
                      So mein erster Versuch hat geklappt.
                      Habs nur in das Script eingebaut und siehe da, es klappt nicht.
                      Kann in Namensfelder Zahlen eintragen und bekomme keine Fehlermeldung

                      Hier mal ein Teil vom Code:
                      PHP-Code:
                      <?php
                      if (isset($_POST["submit"]))
                      {
                          
                      //Error Handling starten
                          
                      $error = array();
                          
                          if (!
                      preg_match("#^([a-z0-9 \?\!\.\'_-]+)$#si",$_POST["ename"]))
                          {
                              
                      $error['ename'] = 'Der Eventname ist nicht zulässig!';
                          }
                      //Validierung des Veranstalters
                          
                      if (!preg_match("#^([a-z -]+)$#si",$_POST["hfn"]))
                          {
                              
                      $error['hfn'] = 'Der Vorname des Veranstalters ist nicht zulässig!';
                          }
                          if (!
                      preg_match("#^([a-z -]+)$#si",$_POST["hsn"]))
                          {
                              
                      $error['hsn'] = 'Der Nachname des Veranstalters ist nicht zulässig!';
                          }
                          if (!
                      preg_match("#^([a-z0-9 -]+)$#si",$_POST["hst"]))
                          {
                              
                      $error['hst'] = 'Die Straße des Veranstalters ist nicht zulässig!';
                          }
                          if (!
                      preg_match("#^([0-9]+)$#si",$_POST["hzip"]))
                          {
                              
                      $error['hzip'] = 'Die Postleitzahl des Veranstalters ist nicht zulässig!';
                          }
                          if (!
                      preg_match("#^([a-z0-9 -]+)$#si",$_POST["hcity"]))
                          {
                              
                      $error['hcity'] = 'Die Stadt des Veranstalters ist nicht zulässig!';
                          }
                      /*
                      //Validierung des Veranstaltungsorts
                          if (!preg_match("#^([a-z0-9 -]+)$#si",$_POST["vfn"]))
                          {
                              $error['vfn'] = 'Der Vorname des Veranstaltungsorts ist nicht zulässig!';
                          }
                          if (!preg_match("#^([a-z -]+)$#si",$_POST["vsn"]))
                          {
                              $error['vsn'] = 'Der Nachname des Veranstaltungsorts ist nicht zulässig!';
                          }
                          if (!preg_match("#^([a-z0-9 -]+)$#si",$_POST["hst"]))
                          {
                              $error['hst'] = 'Die Straße des Veranstaltungsorts ist nicht zulässig!';
                          }
                          if (!preg_match("#^([0-9]+)$#si",$_POST["hzip"]))
                          {
                              $error['hzip'] = 'Die Postleitzahl des Veranstaltungsorts ist nicht zulässig!';
                          }
                          if (!preg_match("#^([a-z0-9 -]+)$#si",$_POST["hcity"]))
                          {
                              $error['hcity'] = 'Die Stadt des Veranstaltungsorts ist nicht zulässig!';
                          }
                      //Validierung Datum und Uhrzeit
                          if (!preg_match("#^([0-9.]+)$#si",$_POST["date"]))
                          {
                              $error['date'] = 'Das Datum ist nicht zulässig!';
                          }
                          if (!preg_match("#^([0-9:]+)$#si",$_POST["time"]))
                          {
                              $error['time'] = 'Die Uhrzeit ist nicht zulässig!';
                          }
                      //Validierung Teilnehmerzahl und Preis
                          if (!preg_match("#^([0-9]+)$#si",$_POST["member"]))
                          {
                              $error['member'] = 'Für die Teilnehmerzahl sind nur Zahlen zulässig!';
                          }
                          if (!preg_match("#^([0-9,]+)$#si",$_POST["pprice"]))
                          {
                              $error['pprice'] = 'Für der Preis der Vorkasse sind nur Zahlen zulässig!';
                          }
                          if (!preg_match("#^([0-9,]+)$#si",$_POST["bprice"]))
                          {
                              $error['bprice'] = 'Für der Preis der Abendkasse sind nur Zahlen zulässig!';
                          }
                      //Validierung der Bankverbindung
                          if (!preg_match("#^([a-z _-]+)$#si",$_POST["depot"]))
                          {
                              $error['depot'] = 'Der Name des Kontoinhabers ist nicht zulässig!';
                          }
                          if (!preg_match("#^([0-9]+)$#si",$_POST["acnr"]))
                          {
                              $error['acnr'] = 'Für die Kontonummer sind nur Zahlen zulässig!';
                          }
                          if (!preg_match("#^([0-9]+)$#si",$_POST["baco"]))
                          {
                              $error['baco'] = 'Für die Bankleitzahl sind nur Zahlen zulässig!';
                          }
                          if (!preg_match("#^([a-z _-]+)$#si",$_POST["bank"]))
                          {
                              $error['bank'] = 'Der Name des Kreditinsituts ist nicht zulässig!';
                          }
                          if(strlen($_POST["descr"]) < 500)
                          {
                          $error['desc'] = 'In der Beschreibung wurden mehr als 500 Zeichen eingegeben!';
                          }
                      */
                      //Tritt kein Fehler auf schreibe in die DB
                      if (!$error)
                      {
                      //SQL-Login
                      include("sql_event.php");
                      Habe einen Teil auskommentiert, um eben zu testen woran der Fehler liegt.
                      Komme leider nicht weiter. Hat jemand ne Idee?
                      Wie gesagt in einem Einfachen Script hats noch getan, nur hier nicht.
                      Bestimmt wieder ein Leichtssinnsfehler.
                      @litterauspirna
                      hab mich mal deinen Tut bemächtigt

                      edit:
                      habe den Fehler gefunden.
                      Hätte im Form-Bereich folgenden Code "<?php echo htmlentities($_SERVER['SCRIPT_NAME']) ?>"
                      unter action eintragen sollen und nicht unter name

                      Kommentar


                      • #12
                        dateityp validieren

                        So noch dies Frage dann kann ich das Thema als erledigt markieren.

                        Nun will ich noch den Dateityp validieren.
                        D.h. nur gewisse Bilddateitypen sollen erlaubt sein.

                        Per google bin ich auf eine Lösung gestoßen die ich nur noch um die Ausrufezeichen ergänzt habe:
                        PHP-Code:
                        if ($_FILES["upfile"]["type"] !="image/gif" || $_FILES["upfile"]["type"] !="image/jpeg"
                        || $_FILES["upfile"]["type"] !="image/png" || $_FILES["upfile"]["type"] !="image/wbmp")
                            {
                                
                        $error['mime'] = 'Der Dateityp ist nicht erlaubt!';
                            } 
                        Nun will das nicht so wie ich mir das vorstelle.

                        Baue ich das Script um und prüfe nur auf jpg dann gehts.
                        Warum will das nicht?

                        Kommentar


                        • #13
                          Kommt darauf an welche dateitypen du erlauben willst. Momentan sagt dein Script das alle dateien erlaubt sind, ausser (gif, jpeg, png, wbmp). Ist das dein Ziel?

                          Kommentar


                          • #14
                            Im übrigen würde ich nicht so prüfen. Du vertraust auf das was vom Browser gesendet wird und das ist sehr einfach zu manipulieren. Nutze für solch Prüfungen [MAN]getimagesize[/MAN] oder mache es selber in dem du den String aus dem $_FILES['img']['name'] erhältst und prüfe die Bildnamen auf Zeichen und den Type gegen eine Whitelist die du dir mit einem Array selbst schaffen kannst. So bist du auf der sicheren Seite das dir niemand etwas unterjubeln kann und auch keine Leerzeichen oder so im Bildnamen stehen, das spielen manche Server nicht mit, bzw. haben das nicht gerne.

                            Hier kannst du dir mal einen einfachen Bilderupload anschauen, da findest alles was du brauchst Lit-Web - Tutorials - PHP - Einfacher Bildupload.

                            Gruß litter

                            Kommentar


                            • #15
                              Zitat von litterauspirna Beitrag anzeigen
                              oder mache es selber in dem du den String aus dem $_FILES['img']['name'] erhältst und prüfe die Bildnamen auf Zeichen und den Type gegen eine Whitelist die du dir mit einem Array selbst schaffen kannst.
                              Naja, die dateiendung zu ändern sollte noch einfacher sein als falsche daten an den Server zu senden

                              Kommentar

                              Lädt...
                              X