vespa Posté 7 Juin 2005 Posté 7 Juin 2005 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 googleif ( 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 Posté 7 Juin 2005 Posté 7 Juin 2005 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.
vespa Posté 7 Juin 2005 Auteur Posté 7 Juin 2005 Je viens d'essayer et cela à l'air de bien fonctionner Merci Dan
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant