В PHP, как бы я проанализировал следующую строку запроса, чтобы получить всю переменную "url", которая должна содержать все после нее?
http://www.mydomain.com/?c=log&m=index&url=https://www.facebook.com/logout.php?next=http%3A%2F%2Fwww.anotherdomain.com&access_token=AAACPpB5pr5gBAJLFZBGaU6SM7UMlGQob7QUBf3aI0DIHrHWtcTGHirS0UrwwDDZBEiIQHeWfkOVCFbEXrFt6TdVlbPrXmV6xyPDI9pPQZDZD
$_GET['url'] отбрасывает все после «www.anotherdomain.com», потому что встречает другое «&».
$_GET['url']
Проблема в том, что "url" предоставлен Facebook. Если я urlencode всей строки, он становится недействительным. Как мне разобрать 'url', чтобы программно urlencode только часть, которую нужно изменить?
попробуйте что-то вроде этого
$link = "http://www.mydomain.com/?c=log&m=index&url="; $link .= rawurlencode('https://www.facebook.com/logout.php?next=http%3A%2F%2Fwww.anotherdomain.com'); $link .= '&access_token=AAACPpB5pr5gBAJLFZBGaU6SM7UMlGQob7QUBf3aI0DIHrHWtcTGHirS0UrwwDDZBEiIQHeWfkOVCFbEXrFt6TdVlbPrXmV6xyPDI9pPQZDZD';
, чтобы извлечь данные, используя
$url_get = rawurldecode($_GET['url']);
URL должен быть urlencode d перед передачей, в противном случае это недопустимый параметр строки запроса.
urlencode