Ralf: Auswahlliste: value wird bei POST-Übertragung abgeschnitten

Hallo zusammen,

woran liegt das, wenn der Wert (value) einer select-option-Liste beim Übertragen via POST bei 32 Zeichen abgeschnitten wird?

Bei der Ausgabe der Formular-Werte via

print_r ( $_POST );

in PHP ist dieses Verhalten des Abschneidens nach 32 Zeichen klar zu beobachten, jetzt find ich nur keinen Beitrag, in dem das gleiche Problem thematisiert wird, wer hat einen Hinweis?

es grüßt der Ralf

  1. Hallo,

    woran liegt das, wenn der Wert (value) einer select-option-Liste beim Übertragen via POST bei 32 Zeichen abgeschnitten wird?

    mir ist dieses Verhalten noch nie über den Weg gelaufen, allerdings habe ich auch nie derart lange Werte verwendet :-)

    Bei der Ausgabe der Formular-Werte via

    print_r ( $_POST );

    Besser mit kontextgerechter Behandlung:

    htmlspecialchars(print_r($_POST, true));

    Nicht dass Dir die Kontrollausgabe einen Strich durch die Rechnung macht.
    Noch besser die Kontrollausgabe mit var_dump vornehmen.

    Freundliche Grüße

    Vinzenz

    1. Hallo,

      woran liegt das, wenn der Wert (value) einer select-option-Liste beim Übertragen via POST bei 32 Zeichen abgeschnitten wird?

      mir ist dieses Verhalten noch nie über den Weg gelaufen, allerdings habe ich auch nie derart lange Werte verwendet :-)

      gerade getestet mit

      <html>  
      <head>  
        <title>Überprüfung von Ralfs Vermutung</title>  
      </head>  
      <body>  
        <h1>Längenbeschränkung der Werte von SELECT-Elementen</h1>  
        <div>  
          <form action="" method="POST" name="formular">  
            <select name="auswahl">  
              <option value="012345678901234567890123456789012345678901234567890">40</option>  
              <option value="012345678901234567890123456789012345678901234567890123456789">50</option>  
            </select>  
            <input type="submit" value="Absenden">  
          </form>  
        </div>  
        <h2>Resultat</h2>  
        <p>  
        <?php  
      [code lang=php]    if(isset($_POST['auswahl'])) {  
            echo "<pre>\n";  
            var_dump($_POST);  
            echo "</pre>\n";  
          }  
      
      ~~~  ?>  
        </p>  
      </body>  
      </html>  
      [/code]  
      Ich kann damit das von Dir beschriebene Verhalten nicht nachvollziehen.  
      Verwendete PHP-Version: 5.3.1  
        
        
      Freundliche Grüße  
        
      Vinzenz
      
  2. Lieber Ralf,

    hast Du einen Link, bei dem man das live beobachten könnte? Ansonsten müsste man jetzt über eine vorhandene Server-Konfiguration spekulieren...

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
  3. woran liegt das, wenn der Wert (value) einer select-option-Liste beim Übertragen via POST bei 32 Zeichen abgeschnitten wird?

    <option value=well what do you think?>

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
  4. Hello Ralf,

    woran liegt das, wenn der Wert (value) einer select-option-Liste beim Übertragen via POST bei 32 Zeichen abgeschnitten wird?

    Bei der Ausgabe der Formular-Werte via

    print_r ( $_POST );

    in PHP ist dieses Verhalten des Abschneidens nach 32 Zeichen klar zu beobachten, jetzt find ich nur keinen Beitrag, in dem das gleiche Problem thematisiert wird, wer hat einen Hinweis?

    Wie sehen denn die Werte aus?
    Wurden sie im HTML ordnungsgemäß quoted?

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  5. Hi,

    woran liegt das, wenn der Wert (value) einer select-option-Liste beim Übertragen via POST bei 32 Zeichen abgeschnitten wird?

    Bei der Ausgabe der Formular-Werte via

    print_r ( $_POST );

    in PHP ist dieses Verhalten des Abschneidens nach 32 Zeichen klar zu beobachten,

    Was sagt die Firefox-Extension LiveHttpHeaders? Wieviele Zeichen werden tatsächlich übertragen?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. hi,

      Was sagt die Firefox-Extension LiveHttpHeaders? Wieviele Zeichen werden tatsächlich übertragen?

      Ähm, solche o.a. Werkzeuge sagen, wieviele _bytes_ übertragen wurden ;-)

      Also, ich denke, Tom ist dem Problem auf der Spur. Wenn nicht richtig gequoted wurde, ist ein "&" kein Literal sondern ein Trennzeichen für Parameter. Hier wäre noch zu prüfen, ob das Form in "x-www-form-urlencoded" gesendet wird, da trennt ein Ampersand die Parameter.

      Prüfe Quoting, evnt. enctype mal auf multipart/form-data umstellen und testen, was dann passiert.

      Hotti

      1. Hi,

        Was sagt die Firefox-Extension LiveHttpHeaders? Wieviele Zeichen werden tatsächlich übertragen?

        Ähm, solche o.a. Werkzeuge sagen, wieviele _bytes_ übertragen wurden ;-)

        Da Du LiveHttpHeaders offensichtlich nicht kennst, solltest Du hier keinen Unsinn darüber verbreiten.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
        1. Hi Andreas,

          Was sagt die Firefox-Extension LiveHttpHeaders? Wieviele Zeichen werden tatsächlich übertragen?

          Ähm, solche o.a. Werkzeuge sagen, wieviele _bytes_ übertragen wurden ;-)

          Da Du LiveHttpHeaders offensichtlich nicht kennst, solltest Du hier keinen Unsinn darüber verbreiten.

          Doch, kenne ich. Content-Length ist da in bytes angegeben. Das ist im Protokoll http nunmal so üblich. Aber wir müssen nicht streiten, im http-header ist sowieso alles ascii und damit ist 1 byte == 1 Zeichen ;-)

          Viele Grüße,
          Hotti

          1. Hi,

            Doch, kenne ich.

            Offensichtlich nicht gut genug.

            Content-Length ist da in bytes angegeben.

            Ja und? Die Content-Length-Angabe interessiert doch hier gar nicht, weil es nicht darum geht, wie groß der gesamte Content ist.

            Es geht doch darum, wieviele Zeichen eines der Parameter übertragen werden. Und das kann man in LiveHttpHeaders einfach sehen, wenn man sich den Request anguckt und ggf. die Zeichen für diesen Parameter zählt.

            Das ist im Protokoll http nunmal so üblich. Aber wir müssen nicht streiten, im http-header ist sowieso alles ascii und damit ist 1 byte == 1 Zeichen ;-)

            Die header sind aber hier vollkommen irrelevant, da es um eine POST-Übertragung geht und darum, wieviele Zeichen für einen Parameter übertragen werden. Und bei POST stehen die Parameter nicht im head, sondern im Request-Body.

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            O o ostern ...
            Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
            1. hi Andreas,

              Die header sind aber hier vollkommen irrelevant, da es um eine POST-Übertragung geht und darum, wieviele Zeichen für einen Parameter übertragen werden. Und bei POST stehen die Parameter nicht im head, sondern im Request-Body.

              Gerade hierzu ist der Header interessant mit der Angabe Content-Length.... also worauf ich hinauswill: Die Anzahl der Zeichen ist nicht die Anzahl der bytes. Beim Zählen der Zeichen im Body wirst Du ggf. einen anderen Wert erhalten, als in Content-Length angegeben, das hängt von der Zeichenkodierung ab.

              Es gibt verschiedene Werkzeuge, das von Dir Genannte ist ok für die Fehlersuche. Ich möchte keinem hier im Forum, schon gar nicht den Stammpostern und auch mir nicht unterstellen, dass sie mit solchen Werkzeugen nicht umgehen können. Wer was nicht weiß, fragt halt und lernt das im Handumdrehen auch wenns mal tiefer reingeht, wir haben doch das Forum dazu.

              Viele Grüße aus Oppenheim,
              Rolf

              1. Hallo,

                Die header sind aber hier vollkommen irrelevant, da es um eine POST-Übertragung geht und darum, wieviele Zeichen für einen Parameter übertragen werden. Und bei POST stehen die Parameter nicht im head, sondern im Request-Body.
                Gerade hierzu ist der Header interessant mit der Angabe Content-Length...

                sicher ist der interessant, aber für die Fragestellung unerheblich.

                Die Anzahl der Zeichen ist nicht die Anzahl der bytes. Beim Zählen der Zeichen im Body wirst Du ggf. einen anderen Wert erhalten, als in Content-Length angegeben, das hängt von der Zeichenkodierung ab.

                Richtig, aber für die Fragestellung unerheblich.

                Es gibt verschiedene Werkzeuge, das von Dir Genannte ist ok für die Fehlersuche. Ich möchte keinem hier im Forum, schon gar nicht den Stammpostern und auch mir nicht unterstellen, dass sie mit solchen Werkzeugen nicht umgehen können.

                Dann is' ja gut. :-)

                Ach so, beinahe hätte ich vergessen, warum dein Content-Length irrelevant ist: Dieser Wert gibt tatsächlich die Gesamtzahl der Bytes im Request Body an. Darin sind aber auch die Namen der Parameter eingeschlossen, sowie die Trennzeichen '=' und '&'. Und wenn einzelne Parameter URL-codiert sind, zählt Content-Length für jedes Prozent-codierte Byte drei Bytes (wobei man darüber diskutieren kann, ob man diese durch die Transportcodierung entstandenen drei Bytes aus HTTP-Sicht als *ein* Zeichen zählen möchte oder als drei).
                Das ist also alles nutzlos, wenn man nur die Zahl der Bytes oder Zeichen im Wert *eines* bestimmten Parameters wissen möchte.

                So long,
                 Martin

                --
                Ich wollt', ich wär ein Teppich.
                Dann könnte ich morgens liegenbleiben.
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(