Maresa P: Query String, Ternnzeichen -> Probleme mit Mac

Hallo,

ich übermittle einige Werte mittels Querystring an ein PHP und an ein Perl Script.

Bspl:

ausw.php?wert1=foo&wert2=bar&wert3=foobar

Das Auslesen der Variablen funktioniert auch wunderbar, wenn der PC genutzt wird.

Nun funktioniert das Ganze aber nicht am MAC aus den USA. Ich bekomme nur den 1. Wert übermittelt.

Das ganze ist UTF-8 kodiert.

Irgendwo hab ich gelsesen, dass man die kaufmännischen Unds (&) durch &#26 ersetzen muss. Habe das mal probiert, funktioniert aber genauso nicht, da das Script dann die Strings nichtmehr auseinanderhalten kann.

Woran kann das liegen? Wie lässt sich das Problem beheben?

Vielen Dank für Euere Hilfe

Maresa

  1. Hello,

    im Link, der im HTML-Text steckt:

    $link = "<a href="ausw.php?".
               urlencode("wert1")."=".urlencode($foo)."&".
               urlencode("wert2")."=".urlencode($bar)."&".
               urlencode("wert3")."=".urlencode($foobar)."#".
               urlencode($anchor)>".
               htmlentities($linktext)."</a>";

    Macht dann in der Adressleiste:

    ausw.php?wert1=foo&wert2=bar&wert3=foobar#anker

    Der Browser codiert da ganze wieder HTML-gerecht und schickt es auf
    den Weg. Der Server decodiert das Ganze wieder und stopft es ins $_GET
    Wie ich vorhin gerade schmerzlich erinnert wurde, wird der Anker vom Browser nicht mit auf die Reise geschickt. Er obliegt der lokalen Benutzung.

    Das Auslesen der Variablen funktioniert auch wunderbar, wenn der PC genutzt wird.

    Nun funktioniert das Ganze aber nicht am MAC aus den USA. Ich bekomme nur

    den 1. Wert übermittelt.

    Läuft der Server auf dem Mac, oder ist das der Client?

    Das ganze ist UTF-8 kodiert.
    Irgendwo hab ich gelsesen, dass man die kaufmännischen Unds (&) durch &#26 ersetzen muss. Habe das mal probiert, funktioniert aber genauso nicht, da das Script dann die Strings nichtmehr auseinanderhalten kann.

    Siehe oben. Oft wird der Fehler gemacht, dass die gesamte Zeile UTF-8-Codiert wird. "=" und "?" dürfen aber nicht mit codiert werden.

    Zum Verfahren:

    Der Server decodiert nach dem Empfang als erstes die URI des Request mit
    html_entity_decode()
    und splittet an den Zeichen "?", "=" und "&" die Parameter von der URL ab und separiert jedes einzelnes Pärchen name:value (so stehen sie nämlich im HTTP-Header). Die einzelnen Elemente werden dann urldecode() unterzogen und im $_GET untergebracht. Dort stehen sie wieder im Klartext.

    Jrtzt müsstest Du die Stellen suchen, wo der Mac was anders machen kann, als der PC (Zeichensatzabhängigkeit)

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen