проблема с синтаксическим анализом url(), когда одним из параметров является url


Я вызываю php-скрипт http://site.com/process.php, который принимает URL-адрес в качестве одного из своих параметров. for=

http://site.com/process.php?for=http://www.anotherwebsite.com

Затем я делаю это и пытаюсь parse_url(), но parse_url() выдает ошибку синтаксического анализа.

$uri = $_SERVER['REQUEST_URI']; // /process.php?for=http://www.anotherwebsite.com
parse_url($uri);

Как я могу закодировать параметр for либо на отправляющей стороне (в URL-адресе), либо на принимающей стороне (php), чтобы parse_url() понимал, что это просто параметр, который выглядит как URL-адрес?

Author: zmol, 2011-02-11

2 answers

Ну, сначала вы должны urlencode() задать параметр for=, затем в process.php вы можете просто сделать

$url = $_GET["for"];
$url = urldecode($url); // http://www.anotherwebsite.com

Вот функции: http://php.net/manual/en/function .urlencode.php http://php.net/manual/en/function.urldecode.php

 2
Author: Radoslav Georgiev, 2011-02-11 12:41:18

Перед включением вашего URL-адреса в качестве параметра get используйте urlencode

$full_url = 'http://site.com/process.php?for=' . urlencode('http://www.anotherwebsite.com');

Эта функция удобна при кодировании строки, которая будет использоваться в запрашивать часть URL-адреса, как удобный способ передачи переменных следующему страница.


Чтобы отменить результат urlencode, используйте urldecode. Как отметил Марио в комментарии ниже, параметры $_GET уже закодированы по URL.

 3
Author: Michael Robinson, 2011-02-11 12:44:56