Получить аргумент и распечатать его - PullRequest
0 голосов
/ 05 августа 2010

Я хочу сделать print для аргумента, который находится в URL, например, (в данном случае это Google):

http://bitoffapp.org/?http://google.com/

Я хочу получить это и напечатать так:

print("Go <a href='$url'>back</a> to the page you was before the login);

Как я могу это сделать?

Ответы [ 5 ]

6 голосов
/ 05 августа 2010
$div = explode("?", $_SERVER['REQUEST_URI'], 2);
$arg = end($div);
//like Sarfraz says, you can also use directly $_SERVER['QUERY_STRING']

echo sprintf(
    'Go <a href="%s">back</a> to the page...',
    htmlspecialchars(urldecode($arg), ENT_QUOTES));

На практике вы хотите проверить URL, чтобы увидеть

  • Если это действительно правильный URL (см. FILTER_VALIDATE_URL )
  • Если вы можете найти там префикс своего сайта (достаточно проверить substr($url, 0, strlen($prefix)) === $prefix); $url - строка запроса с кодировкой URL)

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

1 голос
/ 05 августа 2010

Если это должно быть из URL, вы должны иметь его urlencoded и как переменную GET.

$prevUrl = urlencode("http://google.com/");
http://bitoffapp.org/?url=$prevUrl;

Затем просто прочитайте это в вашу функцию php из глобальной GET

$url = urldecode($_GET['url']);
print("Go <a href='$url'>back</a> to the page you was before the login");

Тем не менее, я бы посмотрел на получение их предыдущего URL из глобала _SERVER. _SERVER Global.

0 голосов
/ 05 августа 2010
parse_url($url,PHP_URL_QUERY);
0 голосов
/ 05 августа 2010

Если ваш URL http://bitoffapp.org/script.php?url={my_url}, вы можете сделать это:

echo '<a href="' . $_GET['url'] . '">Go back to the page you were on before login</a>';
0 голосов
/ 05 августа 2010

Do:

var_export($_REQUEST);

Получить:

array ( 'http://www_google_com' => '', )

Для правильной ссылки используйте? Url = http://google.com/

Тогда вы можете найти его в этих::

$_REQUEST['url']; // All POST, GET, ... variables
$_GET['url'];
...