Mike: rawurldecode() dekodiert nicht

Moin @ all

ich benötige mal (wieder) Eure Hilfe.

Wenn ich einen Link erzeuge, welcher so aussieht:

$Firma='Metzgerei & Co';

< a href="anzeigen.php?Name='.$Firma.'">
dann wird natürlich bei der Page anzeigen.php nur "Metzgerei" angezeigt und nicht "Metzgerei & Co", da das Ampersand nicht codiert ist.
Nun zeuge ich also folgenden Link:

<a href="anzeigen.php?Name='.rawurlencode($Firma).'">
Die URL sieht dann so aus: anzeigen.php?Name=Metzgerei%20%26%20Co
So weit so gut. Nun möchte ich mir den übergebenen String anzeigen lassen. $Add1=rawurldecode($_GET['Name']);

Nun mein Problem es wird nur "Metzgerei" angezeigt und nicht wie erwartet "Metzgerei & Co"

Client:XP

Server:
Windows NT 5.0 build 2195
PHP Version 4.2.2
Microsoft-IIS/5.0

Was mache ich falsch?

Danke & Grüße
Mike

--
Murphy: "Wenn etwas schiefgehen kann, dann wird es auch schiefgehen."
  1. Hello,

    <a href="anzeigen.php?Name='.rawurlencode($Firma).'">
    Die URL sieht dann so aus: anzeigen.php?Name=Metzgerei%20%26%20Co
    So weit so gut. Nun möchte ich mir den übergebenen String anzeigen lassen. $Add1=rawurldecode($_GET['Name']);

    Warum schreibst Du nicht einfach

    echo $_GET['Name'];

    Im $_GET-Array steht bereits der dekodierte String drin.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Moin Tom,

      echo $_GET['Name'];

      Im $_GET-Array steht bereits der dekodierte String drin.

      Negativ. Alles nach dem & wird abgeschnitten.

      Gruß
      Mike

      --
      Murphy: "Wenn etwas schiefgehen kann, dann wird es auch schiefgehen."
      1. Hello,

        echo $_GET['Name'];

        Im $_GET-Array steht bereits der dekodierte String drin.

        Negativ. Alles nach dem & wird abgeschnitten.

        Nimm mal dieses Ziel und schau es Dir an:

        <a href="http://selfhtml.bitworks.de/debug/kontrolle.php?Name=Metzgerei%20%26%20Co">click</a>

        Ergebnis:

        GET-VariablenArray
        (
            [Name] => Metzgerei & Co
        )

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
  2. Moin Mike!

    <a href="anzeigen.php?Name='.rawurlencode($Firma).'">
    Die URL sieht dann so aus: anzeigen.php?Name=Metzgerei%20%26%20Co
    So weit so gut. Nun möchte ich mir den übergebenen String anzeigen
    lassen. $Add1=rawurldecode($_GET['Name']);

    Nun mein Problem es wird nur "Metzgerei" angezeigt und nicht wie
    erwartet "Metzgerei & Co"

    Werden Parameter über eine URL an ein PHP übergeben, so dekodiert PHP die Parameter automatisch. Somit würdest du doppelt dekodieren.

    Folglich befinden sich in den superglobalen Variablen wie $_GET, $_POST und $_REQUEST bereits ein dekodierter String.

    Mehr Informationen in der dclp-FAQ:
     11.2. Wie kann ich ohne Formular Variablen an ein Script übergeben?
     http://www.dclp-faq.de/q/q-variable-uebergeben.html

    1. hi,

      Werden Parameter über eine URL an ein PHP übergeben, so dekodiert PHP die Parameter automatisch.

      nein, dass passiert m.E. schon einen schritt weiter vorher.

      die kodierung ist nötig, um die daten per HTTP übergeben zu können.
      und bei wem kommt der HTTP-request an? beim webserver.
      und dieser übernimmt dann auch die aufgabe, die daten wieder zu "dekodieren", bevor er sie an ein verarbeitendes script, z.b. in PHP geschrieben, übergibt.

      gruß,
      wahsaga

      --
      I'll try being nicer if you'll try being smarter.
  3. Moin Tom, Xava

    <a href="anzeigen.php?Name='.rawurlencode($Firma).'">

    mir ist da ein Fehler unterlaufen. Es wird gar keine URL erzeugt
    sondern ein Meta Tag

    <meta http-equiv="Refresh" content="0; url=search_cmf.php?AWB='.$AWB.'&ATC='.$ATC.'&Pass_Name='.$pass_add.'&Pass_Zip='.$pass_zip.'&A1='.rawurlencode($search_add1).'&A2='.urlencode($search_add2).'&A3='.urlencode($search_add3).'&A4='.urlencode($search_add4).'&A5='.urlencode($search_add5).'">';

    Sorry :-(
    Mit rawurlencode sieht das so aus: A1=OMNIDEAL%20GMBH%20%26%20CO%20KG
    und ohne so: A1=OMNIDEAL%20GMBH%20&%20CO%20KG Hier wird das Ampersand nicht maskiert. In beiden Fällen wird nur OMNIDEAL GMBH angezeigt.

    Gruß
    Mike

    --
    Murphy: "Wenn etwas schiefgehen kann, dann wird es auch schiefgehen."
    1. Hello,

      das funktioniert ganz erstklassig:

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <HTML>
      <HEAD>
      <meta http-equiv="Refresh"
        content="1; url=http://selfhtml.bitworks.de/debug/kontrolle.php?A1=OMNIDEAL%20GMBH%20%26%20CO%20KG&amp;A2=OMNIDEAL%20GMBH%20%26%20CO%20KG">

      <TITLE>urlencode</TITLE>
      </HEAD>

      <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?">

      <a href="http://selfhtml.bitworks.de/debug/kontrolle.php?Name=Metzgerei%20%26%20Co">click</a>

      </BODY>
      </HTML>

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Moin Tom,

        das funktioniert ganz erstklassig:

        Yep, bei Dir. Bei mir nicht :-(

        Gruß
        Mike

        --
        Murphy: "Wenn etwas schiefgehen kann, dann wird es auch schiefgehen."
      2. Moin Tom, Alle

        *heul* wie kann man nur so doof sein.

        die aufgerufene Page ist ein Frameset, und ich habe die Parameter
        unkodiert weiter gegeben. Im Frameset hohlte ich mir die kodierten Strings und gab sie unkodiert an den Frame weiter.
        Bei einem Frameset ist das natürlich nicht zu sehen, denn durch den Aufruf stehen die Parameter korrekt kodiert in der URL wurden aber in Wirklichkeit unkodiert übergeben.
        Tja manchmal sieht man den Wald vor lauter Bäumen nicht. (Siehe meine Signatur)

        Trotzdem Danke an Alle.
        Gruß
        Mike

        --
        Murphy: "Wenn etwas schiefgehen kann, dann wird es auch schiefgehen."