Vérifier si une donnée contient une chaine de caractères

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Vérifier si une donnée contient une chaine de caractères

par llaveder » 18 déc. 2006, 16:33

Salut Maitrepylos,
Après quelques recherches, je crois que ceci permet de faire la même chose, sans boucle ou truc compliqué :
eregi("search.live.com|google.com|googlebot.com|exabot.com|crawl|inktomisearch.com", $qui)
J'ai bon ?
Encore merci.

par Maitrepylos » 18 déc. 2006, 14:06

Salut,

je dirais ceci, mais peut-être que quelqu'un a plus simple.

$reg = array('66.249.66.83', 'googlebot.com', 'search.live.com', 'inktomisearch.com');

foreach ($reg AS $key=>$valeur)
{
	if(ereg($reg[$key], REMOTE_ADDR)) 
	{
		echo 'ok';
	} 
	else 
	{
		echo 'invalide';
	} 
}


par llaveder » 18 déc. 2006, 13:37

Merci beaucoup les gars !
vous avez mis dans le mille ! C'est exactement le genre de chose que je cherchais. Encore un conseil s'il vous plaît. Comment comparer ma variable $qui à plusieurs chaines différentes en un seul coup ? Par exemple, est-il possible d'écrire ceci :
eregi("'66.249.66.83', 'googlebot.com', 'search.live.com', 'inktomisearch.com'", $qui)
pour comparer $qui à 66.249.66.83, googlebot.com, search.live.com, inktomisearch.com ?
Merci encore !

par Maitrepylos » 18 déc. 2006, 12:39

Bonjour,

quelque chose du genre
if(ereg('googlebot.com', REMOTE_ADDR)) {
          echo 'ok';
} else {
          echo 'invalide';
}


par Ajoloca » 18 déc. 2006, 12:36

Bonjour,

Tu peux utiliser les expressions régulières ou bien les fonctions la famille de la fonction strstr()

par Ryle » 18 déc. 2006, 12:36

Il y a plusieurs fonctions pour faire cela, selon tes affinités avec chacunes, tu peux notamment utiliser strpos() pour retrouver la position d'une sous-chaine, strstr() pour retrouver la sous-chaine, voir un ereg() avec la possibilité d'utiliser les expressions régulières :)

Vérifier si une donnée contient une chaine de caractères

par llaveder » 18 déc. 2006, 12:30

Bonjour à toutes et tous,
je cherche à savoir comment vérifier si une variable contient une partie d'une chaine de caractères. Par exemple vérifier si $qui contient "googlebot" ou "search.live.com" ou "livebot".
ça va me servir d'éviter de compter les moteurs de recherche lors de campagnes de pub sur mon site.

Ainsi, si le REMOTE_ADDR du visiteur est crawl-66-249-66-76.googlebot.com ou crawl-66-249-65-167.googlebot.com ou crawl-XXX.googlebot.com, je dois être capable de ne pas les compter. Donc, si je pouvais identifier la chaine "googlebot.com" et ne pas l'enregistrer dans la base, ce serait bien.

Je sais que je peux faire en sorte de ne pas compter ces adresses lors du compte rendu de la campagne de pub (lecture des entrée dans le tableau), mais l'idéal serait de ne pas enregistrer les robots dans la base.

J'espère avoir été assez clair. Merci beaucoup à ceux qui pourraient m'aider. Kénavo !