2009-09-22 74 views
1

我想使用某人用来查找我的页面的查询,这些查询页面位于引用页面$ GET _ ['q']的URL中(对于yahoo $ GET_ [ 'p'])。我如何使用这些?我想要的东西像$ query = REFERRING PAGE($ GET _ ['q']),但我无法弄清楚这种说法。如何从引用搜索引擎获取查询信息

回答

5

您正在搜索的信息是$_SERVER['HTTP_REFERER']

例如可从网页来使用此网址:http://tests/temp/temp-2.php?q=test+glop,这段代码部分:

var_dump($_SERVER['HTTP_REFERER']); 

给出:

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


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

$query = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY); 
var_dump($query); 

将让你:

string 'q=test+glop' (length=11) 


现在,您可以分析查询字符串parse_str;验证码:

$params = array(); 
parse_str($query, $params); 
var_dump($params); 

会得到你:

array 
    'q' => string 'test glop' (length=9) 


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

if (isset($params['q'])) { 
    var_dump($params['q']); 
} 

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

string 'test glop' (length=9) 


的Et瞧;-)

只是注意,Referer由客户端,这意味着发:

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

+1:非常好的答案。还值得指出的是,它确实在HTTP的上下文中被拼写为“引用者”。 8-) – RichieHindle 2009-09-22 21:37:31

+0

谢谢!呃,阅读你的评论,我首先虽然“哦,我拼写错了吗?” ^^在我们的日常工作中有一件更有趣的事情^^ – 2009-09-22 21:39:49

+0

恐怕我没有跟上。如果我说: $ query = $ _SERVER ['HTTP_REFERER']; 然后$ query =完整的google地址。如果我说: $ query = parse_url($ _ SERVER ['HTTP_REFERER'],PHP_URL_QUERY); var_dump($ query); 然后$查询没有价值。我是否需要包含var_dumps或仅用于我的教育? – 2009-09-22 22:07:33