【问题标题】:Extract Scheme and Host from HTTP_REFERER从 HTTP_REFERER 中提取方案和主机
【发布时间】:2010-11-11 19:19:33
【问题描述】:

我有$_SERVER['HTTP_REFERER']——假装它是http://example.com/i/like/turtles.html。我需要做什么才能从字符串中取出 http://example.com 部分,并将其存储在自己的变量中?

【问题讨论】:

  • 作为旁注,请注意:Referer 并不总是由客户端发送(例如,它可以被禁用),它可以被伪造。所以,不要将任何关键功能(或安全导向)建立在它之上!
  • @PascalMARTIN 中肯的建议。但是,我认为可以从 HTTP POST 请求中检查 $_SERVER 中的 HTTP_REFERER(或使用 filter_input() / filter_input_array())。

标签: php string


【解决方案1】:

在这个例子中,最好的解决方案是使用 PHP 的parse_url method。这会将 URL 拆分为关联数组。然后,您将通过将 schemehost 组合来构建您的最终价值:

if ( $parts = parse_url( "http://example.com/i/like/turtles.html" ) ) {
    echo $parts[ "scheme" ] . "://" . $parts[ "host" ];
}

【讨论】:

    【解决方案2】:

    我会通过以下方式使用parse_url...

    if ($urlParts = parse_url($myURI))
      $baseUrl = $urlParts["scheme"] . "://" . $urlParts["host"];
    

    【讨论】:

      【解决方案3】:

      您应该可以使用the parse_url function 来实现这一目标

      【讨论】:

        【解决方案4】:

        你可以使用正则表达式:

        if (isset($_SERVER['HTTP_REFERER']) && preg_match('@^[^/]+://[^/]+@', $_SERVER['HTTP_REFERER'], $match)) {
            var_dump($match[0]);
        }
        

        或者您可以使用parse_url function

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-27
          • 2021-12-14
          • 2013-06-10
          相关资源
          最近更新 更多