PARSE_URL () Problème lorsque l'un des paramètres est URL
Question
J'appelle un script PHP http://site.com/process.php
Cela prend une URL comme l'un de ses paramètres. for=
http://site.com/process.php?for=http://www.anotherwebsite.com
Je fais ensuite ça et j'essaie de parse_url()
Mais parse_url () donne une erreur d'analyse.
$uri = $_SERVER['REQUEST_URI']; // /process.php?for=http://www.anotherwebsite.com
parse_url($uri);
Comment puis-je encoder le for
paramètre soit sur le côté envoyé (dans l'URL) ou du côté récepteur (PHP) de sorte que parse_url()
comprend que c'est juste un paramètre qui ressemble à une URL?
La solution
Eh bien, vous devez d'abord urlencode()
la for=
paramètre, puis dans process.php
, tu peux simplement faire
$url = $_GET["for"];
$url = urldecode($url); // http://www.anotherwebsite.com
Voici les fonctions:http://php.net/manual/en/fonction.urlencode.phphttp://php.net/manual/en/fonction.urldecode.php
Autres conseils
Avant d'inclure votre URL en tant que get
paramètre, utilisation urlencode
$full_url = 'http://site.com/process.php?for=' . urlencode('http://www.anotherwebsite.com');
Cette fonction est pratique lors du codage d'une chaîne à utiliser dans une partie de requête d'une URL, comme moyen pratique de passer les variables à la page suivante.
Pour inverser le résultat de urlencode
, utilisation urldecode
. Comme Mario l'a souligné dans un commentaire ci-dessous, $_GET
Les paramètres sont déjà ullèques.