Parameterübergabe mit & und ?
Frank
- php
Hallo zusammen!
Ich habe folgendes Problem: Ich möchte folgenden Inhalt in einem Parameter speichern:
index.php?adresse=termine/mannschaften/spielplan.php?team=1&sID=16
Sprich die Seite index.php soll den Parameter $adresse mitbekommen, der mit "termine/mannschaften/spielplan.php?team=1&sID=16" belegt ist.
Mit der obigen Schreibweise erhalte ich allerdings für $adresse nur folgendes zurück:
adresse=termine/mannschaften/spielplan.php?team=1
Das letzte &sID=16 geht irgendwo in den Tiefen des Systems abhanden.
Das Problem ist offensichtlich die doppelte Verwendung des Fragezeichens.
Wie kann ich dieses Problem umgehen? Die Adresse soll im Endeffekt schon genau den String "termine/mannschaften/spielplan.php?team=1&sID=16" enthalten. Ich kann also nicht das Fragezeichen durch eun & ersetzen.
Gruß,
Frank
Hello Frank,
Das Problem ist offensichtlich die doppelte Verwendung des Fragezeichens.
Wie kann ich dieses Problem umgehen? Die Adresse soll im Endeffekt schon genau den String "termine/mannschaften/spielplan.php?team=1&sID=16" enthalten. Ich kann also nicht das Fragezeichen durch eun & ersetzen.
Du musst alle Daten, die über die URL übertragen werden, auch für die URL codieren.
$url_daten = rawurlencode("termine/mannschaften/spielplan.php?team=1&sID=16");
$url = "$domain/index.php?adresse=$daten";
so müsste es funktionieren.
Das Rückcodieren übernimmt übrigens PHP (bzw der Webserver) ganz automatisch für Dich.
In $_GET['adresse'] steht dann also schon wieder der String, so wie Du ihn ürsprünglich hattest.
Den kannst Du dann übrigens gleich mit parse_str() in seine Bestandteile zerlegen lassen
http://de3.php.net/manual/de/function.parse-str.php
sollte dies notwendig sein.
Ein harzliches Glückauf
Tom vom Berg
@@Frank:
Das Problem ist offensichtlich die doppelte Verwendung des Fragezeichens.
Wenn ich [RFC3986 §3.4] richtig interpretieren, sollte das '?' im Query eigentlich kein Problem sein.
Vielleicht hilft ja %-Codierung: index.php?adresse=termine/mannschaften/spielplan.php%3Fteam=1&sID=16
Und nicht vergessen, das '&' im HTML-Kontext zu maskieren! [HTML401 §B.2.2]
Live long and prosper,
Gunnar