Je veux utiliser la requête que quelqu'un a utilisé pour trouver ma page, ceux-ci sont dans l'URL de la page de référence $ GET _ ['q'] (et pour yahoo $ GET_ [ 'p']). Comment puis-je les utiliser? Je veux quelque chose comme $ query = REFERRING PAGE ($ GET _ ['q']), mais je n'arrive pas à trouver le moyen de le dire.Comment puis-je obtenir des informations de requête de moteurs de recherche
1
A
Répondre
5
Les informations que vous recherchez est disponible dans $_SERVER['HTTP_REFERER']
Par exemple, venant d'une page avec cette URL: http://tests/temp/temp-2.php?q=test+glop
, cette partie du code:
var_dump($_SERVER['HTTP_REFERER']);
donne:
string 'http://tests/temp/temp-2.php?q=test+glop' (length=40)
Vous pouvez utiliser parse_url
pour obtenir la chaîne de requête de ce U RL:
$query = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY);
var_dump($query);
vous obtiendrez:
string 'q=test+glop' (length=11)
Maintenant, vous pouvez analyser cette chaîne de requête avec parse_str
; ce code:
$params = array();
parse_str($query, $params);
var_dump($params);
Est-ce que vous obtenez:
array
'q' => string 'test glop' (length=9)
Et enfin, vous pouvez vérifier si le paramètre qui vous intéresse est dans ce tableau:
if (isset($params['q'])) {
var_dump($params['q']);
}
Donnera nous, dans cet exemple:
string 'test glop' (length=9)
Et le tour est joué ;-)
noter simplement que le Referer est envoyé par le client, ce qui signifie:
- il peut être forgé, et peut contenir quoi que ce soit - y compris mauvaises choses (attention aux injections SQL et XSS!)
- c'est optionnel: le navigateur n'est pas obligé de l'envoyer.
+1: Excellente réponse. Il vaut également la peine de souligner que oui, il est vraiment orthographié "referer" dans le contexte de HTTP. 8-) – RichieHindle
Merci! Ergh, en lisant votre commentaire, j'ai d'abord pensé "oh, est-ce que je l'ai mal orthographié?" ^^ Une chose plus drôle dans notre travail quotidien ^^ –
J'ai peur de ne pas suivre. Si je dis: $ query = $ _SERVER ['HTTP_REFERER']; puis $ query = l'adresse complète de google. Si je dis: $ query = parse_url ($ _ SERVER ['HTTP_REFERER'], PHP_URL_QUERY); var_dump ($ query); La requête $ n'a alors aucune valeur. Ai-je besoin d'inclure les var_dumps ou sont-ce juste pour mes études? –