rawurldecode() dekodiert nicht
Mike
- php
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
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
Moin Tom,
echo $_GET['Name'];
Im $_GET-Array steht bereits der dekodierte String drin.
Negativ. Alles nach dem & wird abgeschnitten.
Gruß
Mike
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
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
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
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
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&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
Moin Tom,
das funktioniert ganz erstklassig:
Yep, bei Dir. Bei mir nicht :-(
Gruß
Mike
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