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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top