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

发布于 2024-08-05 16:44:04 字数 143 浏览 6 评论 0原文

我想使用某人用来查找我的页面的查询,这些查询位于引用页面 $GET_['q'] 的 URL 中(对于 yahoo $GET_['p'])。我该如何使用这些?我想要类似 $query = REFERRING PAGE ($GET_['q']) 的东西,但我就是不知道怎么说。

I want to use the query that someone used to find my page, these are in the URL of the referring page $GET_['q'] (and for yahoo $GET_['p']). How can I use these? I want something like $query = REFERRING PAGE ($GET_['q']), but I just can't figure out the way to say it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

过气美图社 2024-08-12 16:44:04

您正在搜索的信息可在 $_SERVER['HTTP_REFERER'] 中找到,

例如,来自具有以下 URL 的页面: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 从该 URL 获取查询字符串:

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

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

  • 它可以可以被伪造,并且可以包含任何内容 - 包括不良内容(注意 SQL 注入和 XSS!)
  • 它是可选的:浏览器不需要发送它。

The information you are searching for is available in $_SERVER['HTTP_REFERER']

For instance, coming from a page with this URL : http://tests/temp/temp-2.php?q=test+glop, this portion of code :

var_dump($_SERVER['HTTP_REFERER']);

Gives :

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

You can the use parse_url to get the query string from that URL :

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

will get you :

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

Now, you can parse that query string with parse_str ; this code :

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

Will get you :

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

And, finally, you can check whether the parameter that interests you is in that array :

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

Will give us, in this example :

string 'test glop' (length=9)

Et voila ;-)

Just note that the Referer is sent by the client, which means :

  • it can be forged, and can contain anything -- including bad stuff (beware SQL injections and XSS !)
  • it is optionnal : the browser is not required to send it.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文