Frank: Parameterübergabe mit & und ?

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

  1. 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

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  2. @@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

    --
    “New Jersey Hall of Fame? […] But then I ran through the list of names: Albert Einstein, Bruce Springsteen... my mother's going to like that. […] it's the only time she's going to hear those two names mentioned in the same sentence, so I'm going to enjoy it.” (Bruce Springsteen when inducted into the New Jersey Hall of Fame, 2008-05-04)