Version complète: sur le forum Webmaster Hub : Script pour intercepter requete du visiteur.
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
vespa
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...



CODE
// 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;
  }
}
Dan
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
CODE
if($pos !== false)

au lieu de
CODE
if($pos >= 0)


Dan

PS: notes bien le !== au lieu de != , les deux == sont importants.
vespa
Je viens d'essayer et cela à l'air de bien fonctionner
Merci Dan tongue.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.