Aller au contenu

Script pour intercepter requete du visiteur.


vespa

Sujets conseillés

Bonjour,

J'ai placé un script pour bloquer l'acces à mon site pour des visiteurs ayant fait une recherche sur une requete précise sur google .

Ce script fonctionne mais parfois pour des requetes avec plusieurs mots il déclanche le blocage alors qu'il ne devrait pas.

Pouvez vous m'aider svp...

// Regexp pour matcher http://www.google.xxx/ ou http://www.google.co.xx/ 
$google_str = '/^http:\/\/www.google\.([a-z]{2,3})|(co\.[a-z]{2})\//i';

// Si le visiteur viens d'une page google
if ( preg_match( $google_str,$_SERVER['HTTP_REFERER']) ) {

  // on récupère le QUERY_STRING du REFERER
  $url_array = parse_url($_SERVER['HTTP_REFERER']);
  parse_str($url_array['query'],$variables);

  // les mots cl se trouvent dans la variable 'q'
  $keywords = urldecode($variables['q']);

  $pos = strpos($keywords, "test",0);

  if ($pos >= 0)
  {
  Header("Location: http://www.monsite.com/no.html");
  exit;
  }
}

Lien vers le commentaire
Partager sur d’autres sites

Salut Vespa,

Le résultat de la fonction strpos doit toujours être analysé avec circonspection vu qu'elle peut retourner 0 ou false selon que la position est en début de chaîne ou que la recherche n'a pas abouti. Et dans ton test, le false est égal à 0...

Il n'est donc pas recommandé de tester cette valeur par rapport au nombre zéro.

A ta place je mettrais

if($pos !== false)

au lieu de

if($pos >= 0)

Dan

PS: notes bien le !== au lieu de != , les deux == sont importants.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...