Kiska Kogtistaya: URL übergeben mit &-Zeichen

Hallo,

Wie bringe ich meinem php-script bei, eine url-Adresse mit einem &-Zeichen komplett zu übernehmen?

Beispiel:
<a href="test.php?url=cgi-bin/bla.cgi?read&ETWAS">

in der test.php steht:
virtual($url);

Ausgabe ist $url=test.php?url=cgi-bin/bla.cgi?read OHNE &-Zeichen und darauf folgende Anweisung.

Wie maskiere ich da das &-Zeichen? Geht das überhaupt?

Danke.

  1. Hallo,

    urlencode($string) dürfte Dein Freund hierfür sein.

    http://www.selfphp3.de/funktionsreferenz/url_funktionen/urlencode.php

    Grüße aus Würzburg
    Julian

    1. Hallo,

      Hallo

      urlencode($string) dürfte Dein Freund hierfür sein.

      dürfte :), ist aber nicht :(, da ich die url aus einem cgi-script aufrufe. Hier müsste ich die URL als komplette Zeichenkette abspeichern und an php übergeben.

      Sollte ich da vielleicht schon in cgi-script maskieren? Weil in php kommt's nicht an. Schon überprüft mit echo $url. Rauch.....

      Vielleicht, ist die Frage was für CGI-Profis oder PHP oder CGI oder...??

      Kiska (eigentlich blond)

      1. Hallo,

        Sollte ich da vielleicht schon in cgi-script maskieren? Weil in php kommt's nicht an. Schon überprüft mit echo $url. Rauch.....

        ja, das ist es wohl. Bei nochmaligem nachdenken ist es auch logisch. PHP geht die URL durch und weißt, daß das Fragezeichen die Datei von den übergebnen Parametern trennt. Nach dem Fragezeichn weiß PHP, daß ein Gleichheitszeichen für die Trennung von Name und Wert steht, das Kaufmannsund für die Trennung solcher Kombinationen. Woher soll also PHP wissen, daß irgendwo ein & eben nicht die Parameter teilt sondern teil des Wertes ist. Die Codierung muß also schon beim Aufruf sein bevor der Wert überhaupt in der Adresszeile auftaucht.

        Grüße aus Würzburg
        Julian

        1. Hallo,

          Hallo nochmal

          ein Gleichheitszeichen für die Trennung von Name und Wert steht, das Kaufmannsund für die Trennung solcher Kombinationen.

          Demzufolge muss folgendes funkzionieren:
          <a href="test.php?url=cgi-bin/bla.cgi?read&$a=ETWAS">

          Der Aufruf ist dann:

          <?
          $b = $url.$a;
          virtual($b);
          ?>

          Geht nicht... Wo ist der Hacken?

          Danke für Deine Hilfe.
          Kiska (immer noch blond, kann sich aber ändern im Laufe des Abends)

          1. Moin

            Demzufolge muss folgendes funkzionieren:
            <a href="test.php?url=cgi-bin/bla.cgi?read&$a=ETWAS">

            ^

            Geht nicht... Wo ist der Hacken?

            Den hab ich dir mal markiert.
            Ausserdem ist das der falsche Ansatz. Der richtige wäre, dort wo auch immer du den URL generierst alle Parameter korrekt zu kodieren. In deinem Fall müsste der Aufruf cgi%2Dbin%2Fbla%2Ecgi%3Fread%26a%3DETWAS heissen, (fast) alles andere ist kein korrekter URL und das Ergebnis dass ein Parser daraus bastelt dementsprechend undefiniert. Mehr sagt dir evt. RFC 1630 und RFC 2616.

            --
            Henryk Plötz
            Grüße aus Berlin

            1. Moin

              Moin auch

              <a href="test.php?url=cgi-bin/bla.cgi?read&$a=ETWAS">
              Den hab ich dir mal markiert.

              Ging trotzdem nicht, habe ich nur falsch gepostet.

              Ausserdem ist das der falsche Ansatz. In deinem Fall müsste der Aufruf cgi%2Dbin%2Fbla%2Ecgi%3Fread%26a%3DETWAS heissen

              Na soll ich Dich jetzt virtuell küssen? Ich muss immer wieder feststellen: "Kaum macht man es richtig und schon geht's."

              Danke.
              Kiska (erheblich dunkler von der Haarfarbe)