Thomas Trey: Sonderzeichen in Datenübergabe per Query-String

Moin

Hab nen Problem mit der Datenübergabe in PHP
z.B. in folgendem Link:

datei.php?var1=test&var2=Pat&Patachon

Da das & als Trennzeichen verwandt wird, bricht PHP beim lesen der Varialbe $var2 beim "&"-Zeichen natürlich ab und $var2 hat dann nur den Wert "Pat".

Wie umgeht man diese Tatsache am besten?
htmlenteties hilft auch nicht, da das "&" in "&" umgewandelt wird und man wieder ein & im String hat.

  1. Maskieren!
    Suche im Forum!

  2. Hello Thomas T.,

    datei.php?var1=test&var2=Pat&Patachon

    Da das & als Trennzeichen verwandt wird, bricht PHP beim lesen der Varialbe $var2 beim "&"-Zeichen natürlich ab und $var2 hat dann nur den Wert "Pat".

    Es ist nicht PHP, das hier abbricht, sondern bereits der HTTP-Server, der die Zeichen ? und & als Sonderzeichen abbricht und anhand dieser die Parameter regeneriert.

    Der Browser würde dann noch das # aussortieren und zum Anker umwandeln.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  3. Hallo,

    Hab nen Problem mit der Datenübergabe in PHP
    z.B. in folgendem Link:

    datei.php?var1=test&var2=Pat&Patachon

    Da das & als Trennzeichen verwandt wird, bricht PHP beim lesen der Varialbe $var2 beim "&"-Zeichen natürlich ab und $var2 hat dann nur den Wert "Pat".

    Wie umgeht man diese Tatsache am besten?

    Das Stichwort ist URL encoding.

    Bau Dir doch mal ein Formular mit method="GET" und einem Text-Input. Trage dort ins Textfeld a&b ein, schicke es ab und beobachte, welche URL der Browser erstellt.

    <form action="#" method="GET">
    <input type="text" name="text" value="">
    <input type="Submit" name="ok" value="ok">
    </form>

    viele Grüße

    Axel

  4. » datei.php?var1=test&var2=Pat&Patachon

    Da das & als Trennzeichen verwandt wird, bricht PHP beim lesen der Varialbe $var2 beim "&"-Zeichen natürlich ab und $var2 hat dann nur den Wert "Pat".

    Eine Möglichkeit wäre auf das ; als Trennzeichen umzusteigen, so wie es schon in HTML 4.0 vom W3C empfohlen wurde[1].

    Setzt natürlich voraus, dass man arg_separator.input in der php.ini oder in .htaccess auf Verzeichnisebene ändern kann. Wird dort beispielsweise ;& eingestellt, kann PHP beide Zeichen erkennen (& muss natürlich weiterhin in URIs als &amp; dargestellt werden).

    [1] Wieso ist diese Empfehlung eigentlich nicht (mehr?) in der XHTML-Spec. enthalten

    1. Hello,

      Da das & als Trennzeichen verwandt wird, bricht PHP beim lesen der Varialbe $var2 beim "&"-Zeichen natürlich ab und $var2 hat dann nur den Wert "Pat".

      Eine Möglichkeit wäre auf das ; als Trennzeichen umzusteigen, so wie es schon in HTML 4.0 vom W3C empfohlen wurde[1].

      Ob eine Abweichung vom allgemeinen "Standard" wirklich so intelligent ist, bezweifele ich. Was ist denn, wenn parametrisierte Links von Systemen weitergeleitet werden sollen, die die Parameter anders interpretieren? Wo hier Transparenz und wo hier Interpretation vorliegen darf, ist doch gar nicht wirklich klar.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. » Ob eine Abweichung vom allgemeinen "Standard" wirklich so intelligent ist, bezweifele ich.

        Als Sender muss man sich natürlich an das halten, was der Server/die Applikation erwartet.

        Als Empfänger ist man ja durch die ;&-Einstellung flexibel. PHP dekodiert dann beides. Es ist sogar in der php.ini so vorgeleistet, man muss nur den Kommentar entfernen.

        Dann kann man für seine eigenen Scripts das ; verwenden und wenn andere darauf zugreifen sollen können sie zwischen ; und & wählen.

        Ich sehe da kein Problem.

  5. Hallo leute!

    wie funzt das mit dem php script einbinden

    www.rollenschneidermarkt.de

    www.slitter-rewinder-secondhand.de

    ciao und danke