得到论据并打印出来

时间:2010-08-05 18:30:23

标签: php url redirect

我想对网址上的参数执行print,就像这样(在本例中是Google):

  

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

我希望得到它并像这样打印:

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

我该怎么做?

5 个答案:

答案 0 :(得分:6)

$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));

实际上,您需要验证网址以查看

  • 如果它确实是有效的网址(请参阅FILTER_VALIDATE_URL
  • 如果您可以在那里找到您的网站前缀(检查substr($url, 0, strlen($prefix)) === $prefix)就足够了; $url是urldecoded查询字符串)

进行这些检查的原因是,否则攻击者可能会诱骗您的用户访问访问网址,这些网址虽然以您的域为前缀,但实际上会将其转发到受害者浏览器中的恶意网站或易受攻击的注册协议。

答案 1 :(得分:1)

如果必须来自网址,则应将其设为urlencoded并作为GET变量。

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

然后从GET全局

中读取它到你的php函数中
$url = urldecode($_GET['url']);
print("Go <a href='$url'>back</a> to the page you was before the login");

但是,我实际上是想从_SERVER全局中抓取他们之前的URL。 _SERVER Global.

答案 2 :(得分:0)

执行:

var_export($_REQUEST);

得到:

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

要获得正确的参考,请使用?url = http://google.com/

然后你可以在这些::

中找到它
$_REQUEST['url']; // All POST, GET, ... variables
$_GET['url'];

答案 3 :(得分:0)

如果您的网址为http://bitoffapp.org/script.php?url= {my_url},则可以执行以下操作:

echo '<a href="' . $_GET['url'] . '">Go back to the page you were on before login</a>';

答案 4 :(得分:0)

parse_url($url,PHP_URL_QUERY);