Daniel_Binder: Textarea mindestens X zeichen.

Hallo!
Ich hab mri ein formluar erstellt, bei dem wenn man den submit button drückt eine befehl an mysql gesendet wird. jetzt hab ich aber das problem, dass dieser befehl automatisch gesendet wird, sobald cih die seite aufrufe. deshalb möchte ich, dass die Textarea mindestens X zeichen haben muss, um gesendet zu werden. wie könnt ich das machen?

  1. Hallo,

    Hallo!
    Ich hab mri ein formluar erstellt, bei dem wenn man den submit button drückt eine befehl an mysql gesendet wird.

    Es wäre nicht schlecht, wenn du _einen Teil_ deines Quelltextes hier schreiben könntest. Aber bitte nur den Teil, der von Belang ist!

    jetzt hab ich aber das problem, dass dieser befehl automatisch gesendet wird, sobald cih die seite aufrufe. deshalb möchte ich, dass die Textarea mindestens X zeichen haben muss, um gesendet zu werden. wie könnt ich das machen?

    So vielleicht?

    if (strlen($_POST['textarea']) <= $x) die ("Gebe mindestens $x Zeichen ein!");

    ;-)

    Nein, ohne Quelltext ist das schwierig.

    Gruß
    Lachgas

    1. Ja, hier ist die Stelle:

      <form name="" method="post" action="<? echo $PHP_SELF; ?>?action=write">

      <table>
      <tr>
      <td>Scanbericht einfügen:</td>
      <td><textarea name="einlesen" minlenght="5" cols="50" rows="10"></textarea></td>
      </tr>

      <tr>
      <td></td>
      <td><input type="submit" name="add" value="Scan einlesen"></td></tr>
      </table>

      </form>
      <?
      $sql = "INSERT INTO $tablename
      (scan)
      VALUES('$einlesen')";

      1. Hallo,

        <td><textarea name="einlesen" minlenght="5" cols="50" rows="10"></textarea></td>

        "minlenght" gibt es (in dieser orthographischen Form schon gar) nicht. Man kann in HTML einem Feld keine Mindestlänge zuweisen, da es das nicht überprüfen kann. Du musst also mit PHP arbeiten (s. u.)

        <?
        $sql = "INSERT INTO $tablename
        (scan)
        VALUES('$einlesen')";

        So etwas hatte ich befürchtet. Das, was du da hast, ist _sehr_ (!) gefährlich. Du räumst damit jedem Besucher ein, deine komplette Datenbank kleinzuhackseln (Stichwort: MySQL-Injection).
        Es sieht so aus, als hättest du bei dir REGISTER_GLOBALS auf ON. Ändere dies umgehend, denn so kann jeder über die URL die beiden Variablen $tablename und $einlesen beliebig bestimmen. Und das kann ganz böse werden. Außerdem bereinige die Eingaben durch mysql_escape_string() bzw. mysql_real_escape_string().

        Dein Problem kannst du mit einer einfachen if-Bedingung lösen:
        $x = 5  // Mindestlänge Textfeld
        if (strlen($_POST['einlesen']) >= $x AND isset($_POST['button'])) // strlen() und isset()
        {
        // ...mach was...
        }
        else
        {
        echo "Gebe mindestens $x Buchstaben ein!";
        }

        Gruß
        Lachgas

        1. Hallo! Also da smit minlenght war nru ein test, hatte ich vergessen rausnehmen thx.

          nun, mit dienem code bekomm ich folgende Fehlermeldung:

          Parse error: parse error, unexpected T_IF in /www/htdocs/vao/test.php on line 45

          hier die Zeile 45:

          if (strlen($_POST['einlesen']) >= $x AND isset($_POST['button'])) // strlen() und isset()

          hab das button auch schon durch submit und add ersetzt, bringt nix.
          ----------------

          Das zweite versteh ich nicht ganz. Wie schalte ich REGISTER_GLOBALS auf OFF?

          1. Hallo,

            Also da smit minlenght war nru ein test, hatte ich vergessen rausnehmen thx.

            Hatte ich mir auch schon gedacht ;-)

            Parse error: parse error, unexpected T_IF in /www/htdocs/vao/test.php on line 45

            Diese Fehlermeldung heißt meist, dass in der vorherigen Zeile am Ende ein Semikolon fehlt. Es muss also heißen: $x = 5;

            hab das button auch schon durch submit und add ersetzt, bringt nix.

            Stimmt, es muss natürlich $_POST['add'] heißen.

            Das zweite versteh ich nicht ganz. Wie schalte ich REGISTER_GLOBALS auf OFF?

            Das kannst du hier nachlesen. Es ist aber nur möglich, wenn du die vollen Rechte besitzt auf deinen Webserver besitzt. Register Globals bedeutet einfach, dass _automatisch_ bei index.php?link=test die Variable $link mit dem Wert "test" definiert wird. Du kannst dir sicher vorstellen, dass das unsicher sein kann, wenn jeder Besucher einfach Variablen bestimmen kann.

            Gruß
            Lachgas

            1. Boar super. Geht :) BIG THANKS

              Nur noch eien Frage.
              Um das register_globals off zu schalten, einfach eine datei namens .htaccess erstellen mit dem inhalt: php_flag register_globals off.
              oder?

              1. Hallo,

                Boar super. Geht :) BIG THANKS

                Bitte. :-)

                Um das register_globals off zu schalten, einfach eine datei namens .htaccess erstellen mit dem inhalt: php_flag register_globals off.
                oder?

                Genau. Dann sind beispielsweise die per URL übermittelten Variablen und deren Werte im Array $_GET gespeichert.

                Gruß
                Lachgas