Linuchs: Wieviel passt in ein textarea?

Moin,

für den Elbe-Radweg habe ich HIER trackpoints gefunden, die ich per PHP umgeformt und per echo ausgegeben habe:

// <name>ERW L01: Schöna - Heidenau</name>
[50.859366981312633,14.222367033362389],
[50.859449962154031,14.222450014203787],
[50.859533026814461,14.222599966451526],
... 
[53.895283006131649,9.128049965947866],
[53.895600009709597,9.127400033175945],
[53.895899998024106,9.126750016584992],

28925 Zeilen (ca 1157000 B)

Habe die per copy & paste in das HTML-textarea des Radwege-Kopfsatzes kopiert und abgeschickt, damit PHP es in der Datenbank speichert.

Das funktionierte nicht und ich lernte den mySQL Datentyp mediumtext für 64 MB kennen, das sollte reichen.

Aber offenbar schickt Firefox diese Datenmenge im textarea gar nicht erst ab. Ich lasse per PHP anzeigen, was angekommen ist. Nichts, nada für dieses Feld.

Ich konnte nicht ausfindig machen, bei welcher Größe textarea versagt. Gibt es für XXXXXL vielleicht auch so ein "Zauberwort" wie mediumtext?

Edit: https://www.w3schools.com/tags/tag_textarea.asp: "A text area can hold an unlimited number of characters, ... "

Ja, das sehe ich, passt alles rein. Aber die Daten sollen nicht gehalten, sondern weitergegeben (gesendet) werden. Das Abschicken dauert, als ob da wirklich was übermittelt wird, aber es steht PHP nicht zur Verfügung.

Ich kenne das Verhalten, wenn Dateien über 2 MB hochgeladen werden. Das dauert und ist dann doch vergeblich. Aber bis 2 MB habe ich doch noch Platz ...

Noch'n Test: Andere Felder sind änderbar, wenn das textarea so gefüllt ist.

  1. moin,

    Aber offenbar schickt Firefox diese Datenmenge im textarea gar nicht erst ab. Ich lasse per PHP anzeigen, was angekommen ist. Nichts, nada für dieses Feld.

    Guck Dir mal den Request Header Content-Length an. Und das was gepostet wurde, findest Du auch in der Konsole.

    MfG

      1. Hallo pl,

        und was machst Du wenn die Requestmethode nicht POST ist!?

        Das wäre bei PUT Requests interessant. Bei GET o.Ä. nicht, weil man über die URL keine riesigen Datenmengen übergeben kann. Ich würde dann anhand der konkreten Problemstellung neu recherchieren, wenn post_max_size nicht greift. Für Linuchs' Frage ist es irrelevant, der hat nach POST aus einem Form gefragt.

        Kannst ja mal experimentieren und es auf deiner Homepage bloggen.

        Rolf

        --
        sumpsi - posui - clusi
        1. @Rolf B

          $POST_MAX ist auch in CGI.pm konfigurierbar. Es hat jedoch mit der Requestmethode POST gar nichts zu tun sondern befragt RFC konform den Header Content-Length.

          Im Übrigen kann es auch mit Requestmethode GET einen message.Body geben. Genausogut kann man eine Requestmethode auch ZITRONE nennen, die FetchAPI machts möglich.

          Ob in PHP dieser konfigurierbare Wert an die Requestmethode geknüpft ist, kann ich nicht beurteilen.

          Was das Problem betrifft: Wirf einen Blick in die Konsole. Bis dahin ist ein post_max uninteressant.

          MfG

          1. Im Übrigen kann es auch mit Requestmethode GET einen message.Body geben.

            „So, yes, you can send a body with GET, and no, it is never useful to do so.“

            Genausogut kann man eine Requestmethode auch ZITRONE nennen, die FetchAPI machts möglich.

            Ein wunderbarer Weg, um einen HTTP-Status 501 zu provozieren.

            1. use strict;
              use warnings;
              use base qw(IO::Socket::SSL);
              use constant CRLF => "\r\n";
              
              my %ca = $^O eq 'MSWin32' ? do{
                  require Mozilla::CA;
                  my $r = {
                      SSL_verify_mode => 0x02,
                      SSL_ca_file => Mozilla::CA::SSL_ca_file()
                  };
                  %$r;
              } : ();
              
              
              
              my $host = "forum.selfhtml.org";
              my $m = main->new(PeerAddr => "$host:443", %ca) or die $@;
              
              $m->print("GET / HTTP/1.0", CRLF);
              $m->print("Host: $host", CRLF);
              $m->print("Content-Length: 4", CRLF, CRLF);
              $m->print('ASDF');
              
              print $m->getline;
              
              

              HTTP/1.1 200 OK

              1. HTTP/1.1 200 OK

                Ja, wie ich schon zitierte, es ist erlaubt, einen message-body in einen GET-Request zu tun; es wird nur explizit davon abgeraten diesen serverseitig nutzen zu wollen.

                Und zur vollständig halber, ersetzt man in deinem Quelltext, das GET durch ZITRONE; liefert der Server „HTTP/1.1 405 Method Not Allowed“.

                1. Richtige Hacker interessieren sich nicht für Deine Ratschläge.

                2. Hallo,

                  könnt ihr bitte aufhören am Server herumzuspielen? Ich kriege da jedesmal eine Mail…

                  LG,
                  CK

                  1. könnt ihr bitte aufhören am Server herumzuspielen? Ich kriege da jedesmal eine Mail…

                    entschuldige bitte

    1. hi @Rolf B

      hab post_max_size mal eben getestet. Das timed zwar aus, aber am Ende antwortet PHP mit HTTP/1.1 200 OK was immer auch das heißen mag. Auffallend ist die lange Antwortzeit.

      MfG

  2. Hello,

    lies Dir dazu mal den Artikel "File Upload" im Unterkapitel Konfigurationseinstellungen durch. Die Einstellunen gelten im Wesentlichen auch für die Textarea.

    Glück Auf
    Tom vom Berg

    --
    Es gibt nichts Gutes, außer man tut es!
    Das Leben selbst ist der Sinn.