cqp: Problem mit langen URL's

Hallo,
ich habe das Problem viele Variablen an ein Script übergeben zu müssen. Leider stürzt mir der IE immer beim Click auf einen Link ab.
Kann es seit das die URL zu lang geworden ist? Welche maximale Länge ist dafür vorgesehen?

Danke, Markus

z.B. der folgende Link dürfte doch nicht zu lang sein oder?
http://localhost/test/markt.php3?handle=showrub&rub=2&tc=#000000&bc=FFFFFF&bcc=E6E6E6&lc=0000CD&vlc=0000CD&alc=4682B4&hlc=DC143C

Danke Markus

  1. Hi,

    ich habe das Problem viele Variablen an ein Script übergeben zu müssen. Leider stürzt mir der IE
    immer beim Click auf einen Link ab.

    Ja, das ist ein Bug des IE.

    Kann es seit das die URL zu lang geworden ist?

    Genau das.

    Welche maximale Länge ist dafür vorgesehen?

    bis etwa 72 Zeichen sollten keine Probleme auftreten.

    mfg
    CK1

    <img src="http://wwwtech.de/images/banner.jpg" alt="">
    http://wwwtech.de/
    http://wwwtech.de/moorhuhn/

    1. Hallo Christian

      Ich zweifle in Keinster Weise (!!!) Deine Antwort an,
      doch würde ich nur gerne ergänzend hinzufügen dass einige Chat's z.B. VIEL längere Query strings übermitteln und mir der IE
      NICHT abschmiert...

      Mfg.
      Forum-Master

      1. Danke erst mal,
        aber wie kann ich das jetzt verhindern? Gibts es da vielleicht irgendweche 'workarounds'?

        thanx

        1. Hallo cqp,

          Danke erst mal,
          aber wie kann ich das jetzt verhindern? Gibts es da vielleicht irgendweche 'workarounds'?

          Nein. Dieser Bug betrifft nur einige IE-Versionen. Durch ein Update des Browsers wird er beseitigt. Dokumentiert ist er bei Microsoft auch nur für Asp-Seiten. Allerdings trifft er auch auf php voll zu.

          Ich würde ihn an deiner Stelle ignorieren. Alternativ könntest du auch die Seite per Javascript laden. Vielleicht funktioniert das.

          Viele Grüße

          Antje

          1. Hi Antje,

            Ich würde ihn an deiner Stelle ignorieren.

            hm, also ignorieren würde ich ihn auf keinen Fall, wer weiß, wieviele Leute mit dem buggy Ding da draußen
            rumsurfen.

            Ich würde den String in ein Formuler packen und per Post übermitteln, wie M. Budde schon angedeutet
            hat. Nur, um die Anzahl der Parameter nicht zu begrenzen, würde ich mir ein eigenes Query-String-Format
            entwickeln, ihn per JS zusammensetzen und das ganze in einem einzigen Hidden-Field übermitteln.
            In PHP kannst du das ganze dann parsen; das ganze könnte etwa so aussehen:

            <script language="JavaScript">
            function set_query()
            {
            encode("param1","wert1");
            encode("param2","wert2");
            encode("param3","wert3");
            encode("param4","wert4");

            document.forms[0].elements[0].value = query;
            document.forms[0].submit();
            }

            var query = "";
            function encode(field, name)
            {
            query += "" + field + "=" + name;
            }
            </script>

            ...
            <form name="bla" action="php-datei" method="post">
            <input type="hidden" name="bla1" value="">
            </form>

            In der PHP-Datei dann:

            <?php
            $felder = split("",$bla1);

            for($i=0;$i<count($felder);$i++)
            {
            list($k,$v) = split("=",$felder[$i],2);
            ${$k} = $v;
            }

            ?>

            So stehen dir die Variablen wie gewohnt in $feldname = "wert" zur Verfügung.

            mfg
            CK1

            <img src="http://wwwtech.de/images/banner.jpg" alt="">
            http://wwwtech.de/
            http://wwwtech.de/moorhuhn/

            1. Hi nochmal,

              das ganze könnte etwa so aussehen:

              hm, mal wieder nicht zuende gedacht ;) ein Bug ist noch drin:

              <script language="JavaScript">
              function set_query()
                {
                encode("param1","wert1");
                encode("param2","wert2");
                encode("param3","wert3");
                encode("param4","wert4");

              document.forms[0].elements[0].value = query;
                document.forms[0].submit();
                }

              var query = "";
              function encode(field, wert)
                {
                query += "" + field + "=" + escape(wert);
                }
              </script>

              ...
              <form name="bla" action="php-datei" method="post">
              <input type="hidden" name="bla1" value="">
              </form>

              ein Link: <a href="javascript:set_query();">

              In der PHP-Datei dann:

              <?php
              $felder = split("",$bla1);

              for($i=0;$i<count($felder);$i++)
                {
                list($k,$v) = split("=",$felder[$i],2);
                ${$k} = urldecode($v);
                }

              ?>

              Die Änderung mit escape() und urldecode() war nötig, da in dem zu übergebenden String ein oder ein =
              sein könnte, was den Parser durcheinander brächte ;)
              so wird er URL-gemäß encodiert und in der PHP-Datei dann wieder decodiert.

              mfg
              CK1

              <img src="http://wwwtech.de/images/banner.jpg" alt="">
              http://wwwtech.de/
              http://wwwtech.de/moorhuhn/

  2. ich habe das Problem viele Variablen an ein Script übergeben zu müssen. Leider stürzt mir der IE immer beim Click auf einen Link ab.
    Kann es seit das die URL zu lang geworden ist? Welche maximale Länge ist dafür vorgesehen?

    hi,

    wenn es nicht notwendig ist, daß die user die URL+querystring bookmarken können, würde ich sagen probier es doch mal mit method=post (genaueres dazu in selfhtml). da ist die länge und anzahl der zu übergebenden parameter nicht kritisch (jedenfalls nicht in bezug auf dein problem).

    gruß
             Marcus

    1. wenn es nicht notwendig ist, daß die user die URL+querystring bookmarken können, würde ich sagen probier es doch mal mit method=post (genaueres dazu in selfhtml). da ist die länge und anzahl der zu übergebenden parameter nicht kritisch (jedenfalls nicht in bezug auf dein problem).

      also quasi mit einem Formular?
      macht sich aber schlecht weil der User auf einen einfachen Link clicken soll.
      Die Seite ist von der Art her so aufgebaut wie yahoo (mit mehreren Rubriken) und da würde es mit einem Formular Layouttechnisch nicht so gut passen.

      Markus

      1. Hi,

        also quasi mit einem Formular?

        ja

        macht sich aber schlecht weil der User auf einen einfachen Link clicken soll.
        Die Seite ist von der Art her so aufgebaut wie yahoo (mit mehreren Rubriken) und da würde es mit einem Formular Layouttechnisch nicht so gut passen.

        versteck irgendwo auf der seite ein formular
        ...
        <FORM NAME="formularname" METHOD=post ACTION="/cgi-bin/meinscript.cgi">
        <INPUT NAME="parameter1" TYPE=hidden VALUE="wert1">
        <INPUT NAME="parameter2" TYPE=hidden VALUE="wert2">
        ...
        </FORM>
        ...

        und setz in dein layout einen ganz normalen link auf eine JavaScript funktion
        ...
        <A HREF="javascript:meineFunktion('wert1','wert2',...);">Linktext</A>
        ...

        jetzt brauchst du nur noch eine JavaScript funktion, die entsprechend der übergebenen parameter die werte der hidden felder setzt und das formular abschickt
        ...
        <HEAD>
        <SCRIPT LANGUAGE="JavaScript">
        <!--
        function meineFunktion(variable1,variable2,...)
        {
            document.formularname.parameter1.value = variable1;
            document.formularname.parameter1.value = variable2;
            ....
            document.formularname.submit();
        }
        -->
        </SCRIPT>
        ...

        1. Danke,

          Prinzip verstanden. Aber noch eine Frage (ich bin nicht ganz so fit in JavaScript): die Anzahl der Parameter für die Funktion ist doch festgelegt oder?

          <A HREF="javascript:meineFunktion('wert1','wert2',...);">Linktext</A>
          ...

          <HEAD>
          <SCRIPT LANGUAGE="JavaScript">
          <!--> function meineFunktion(variable1,variable2,...)
          {
              document.formularname.parameter1.value = variable1;
              document.formularname.parameter1.value = variable2;
              ....
              document.formularname.submit();
          }
          -->
          </SCRIPT>
          ...

          1. Danke,

            Prinzip verstanden. Aber noch eine Frage (ich bin nicht ganz so fit in JavaScript): die Anzahl der Parameter für die Funktion ist doch festgelegt oder?

            ja, das ließe sich noch umgehen, aber im formular befindet sich ja auch eine feste zahl von hidden-feldern.
            schätze vorher ab, wieviele parameter du maximal brauchenwirst und übergebe an nicht benötigte elemente ein dummy z.b. null oder einen leeren string: ""

            Gruß
                       Marcus