Query String, Ternnzeichen -> Probleme mit Mac
Maresa P
- php
0 Tom
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  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
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  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