如何从引用搜索引擎获取查询信息

pg.*_*pg. 1 php get referrer

我想使用某人用来查找我的页面的查询,这些查询位于引用页面的URL $ GET _ ['q'](以及yahoo $ GET _ ['p']).我该怎么用?我想要一些像$ query = REFERRING PAGE($ GET _ ['q'])的东西,但我无法弄清楚说出来的方式.

Pas*_*TIN 5

您要搜索的信息可在以下网址找到 $_SERVER['HTTP_REFERER']

例如,来自具有此URL的页面:http://tests/temp/temp-2.php?q=test+glop,这部分代码:

var_dump($_SERVER['HTTP_REFERER']);
Run Code Online (Sandbox Code Playgroud)

给:

string 'http://tests/temp/temp-2.php?q=test+glop' (length=40)
Run Code Online (Sandbox Code Playgroud)


您可以使用parse_url从该URL获取查询字符串:

$query = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY);
var_dump($query);
Run Code Online (Sandbox Code Playgroud)

会得到你:

string 'q=test+glop' (length=11)
Run Code Online (Sandbox Code Playgroud)


现在,您可以使用以下方法解析该查询字符串parse_str; 这段代码:

$params = array();
parse_str($query, $params);
var_dump($params);
Run Code Online (Sandbox Code Playgroud)

会得到你:

array
  'q' => string 'test glop' (length=9)
Run Code Online (Sandbox Code Playgroud)


最后,您可以检查您感兴趣的参数是否在该数组中:

if (isset($params['q'])) {
    var_dump($params['q']);
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,会给我们:

string 'test glop' (length=9)
Run Code Online (Sandbox Code Playgroud)


Et voila ;-)

请注意,Referer是由客户端发送的,这意味着:

  • 它可以伪造,并且可以包含任何东西 - 包括坏东西(谨防SQL注入和XSS!)
  • 它是可选的:浏览器不需要发送它.