代码之家  ›  专栏  ›  技术社区  ›  Nathan Campos

获取参数并打印它

  •  0
  • Nathan Campos  · 技术社区  · 14 年前

    我想做一个 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 回复  |  直到 14 年前
        1
  •  6
  •   Artefacto    14 年前
    $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 是urldecoded查询字符串)

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

        2
  •  1
  •   kmfk    14 年前

    如果它必须来自URL,则应该对其进行urlencoded并将其作为get变量。

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

    然后从get global将其读到php函数中

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

    不过,我实际上会考虑从服务器全局获取他们以前的URL。 _SERVER Global.

        3
  •  0
  •   Rakward    14 年前

    做:

    var_export($_REQUEST);
    

    得到:

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

    为了正确参考,使用?网址= http://google.com/

    然后你可以在下面找到它:

    $_REQUEST['url']; // All POST, GET, ... variables
    $_GET['url'];
    
        4
  •  0
  •   Stephen Curran    14 年前

    如果你的网址是 http://bitoffapp.org/script.php?url= 我的URL您可以这样做:

    echo '<a href="' . $_GET['url'] . '">Go back to the page you were on before login</a>';
    
        5
  •  0
  •   bcosca    14 年前
    parse_url($url,PHP_URL_QUERY);