parse_url () Problem, wenn einer der Parameter url ist
Frage
Ich rufe ein PHP-Skript auf http://site.com/process.php
das nimmt eine URL als einen seiner Parameter. for=
http://site.com/process.php?for=http://www.anotherwebsite.com
Ich mache das dann und versuche es parse_url()
aber parse_url () gibt einen Analysefehler aus.
$uri = $_SERVER['REQUEST_URI']; // /process.php?for=http://www.anotherwebsite.com
parse_url($uri);
Wie kann ich das kodieren for
parameter entweder auf der sendenden Seite (in der URL) oder auf der empfangenden Seite (php), so dass parse_url()
versteht, dass es nur ein Parameter ist, der zufällig wie eine URL aussieht?
Lösung
Nun, zuerst musst du urlencode()
der for=
parameter, dann in process.php
, können Sie einfach tun
$url = $_GET["for"];
$url = urldecode($url); // http://www.anotherwebsite.com
Hier sind die Funktionen:http://php.net/manual/en/function.urlencode.php http://php.net/manual/en/function.urldecode.php
Andere Tipps
Bevor Sie Ihre URL als get
parameter, verwendung urlencode
$full_url = 'http://site.com/process.php?for=' . urlencode('http://www.anotherwebsite.com');
Diese Funktion ist praktisch, wenn codierung einer Zeichenfolge, die in einem teil einer URL abfragen, als bequeme Möglichkeit, Variablen an die nächste zu übergeben Seite.
Um das Ergebnis von umzukehren urlencode
, verwenden urldecode
.Wie Mario in einem Kommentar unten betonte, $_GET
parameter sind bereits urldecodiert.