проблема с синтаксическим анализом 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-адрес?
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
Перед включением вашего URL-адреса в качестве параметра get
используйте urlencode
$full_url = 'http://site.com/process.php?for=' . urlencode('http://www.anotherwebsite.com');
Эта функция удобна при кодировании строки, которая будет использоваться в запрашивать часть URL-адреса, как удобный способ передачи переменных следующему страница.
Чтобы отменить результат urlencode
, используйте urldecode
. Как отметил Марио в комментарии ниже, параметры $_GET
уже закодированы по URL.