Recherche d'un mot

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 : Recherche d'un mot

Re: Recherche d'un mot

par visualight » 08 mai 2010, 21:05

Eh ben décidement ... me suis aussi trompé dans le preg_match => D'où ton erreur :oops:
Es tu certain que le nom "googlebot" apparaîtra dans $_SERVER['HTTP_USER_AGENT']; ?
Si oui, ceci devrait marcher :
$pattern = '/'.$spider_name.'/i';

if (preg_match($pattern, $server_agent)) {
echo 'OK';
}
A+ ;)

Re: Recherche d'un mot

par Fredy07 » 08 mai 2010, 20:25

Toujours la meme erreur

Re: Recherche d'un mot

par visualight » 08 mai 2010, 20:17

Salut,

En fait je n'ai jamais essayé de faire un masque dynamique (avec une variable php).

Essaye un peu :
if (preg_match("/$server_agent/i", $spider_name)) {

OU

if (preg_match("/".$server_agent."/i", $spider_name)) {

Re: Recherche d'un mot

par Fredy07 » 08 mai 2010, 20:15

$selectsp = "SELECT * FROM spiders WHERE spider_name LIKE '%$server_agent%'";
$querysp = mysql_query($selectsp) OR DIE ('Unable to SELECT spiders: '.mysql_error());
$numsp = mysql_num_rows($querysp);
echo 'num '.$numsp.'<br>';
Desole j'ai oublie ma query, et voila en utilisant le preg_match une erreur qui apparait:
Warning: preg_match() [function.preg-match]: Unknown modifier '5' in full_stat.php on line 48

Re: Recherche d'un mot

par visualight » 08 mai 2010, 19:53

Salut,

=> $numsp = mysql_num_rows($selectsp);
non ?
$server_agent = $_SERVER['HTTP_USER_AGENT']; // par exemple, les termes recuperes sont comme: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
$selectsp = "SELECT * FROM spiders WHERE spider_name LIKE '%$server_agent%'";
$numsp = mysql_num_rows($selectsp);
echo 'num '.$numsp.'<br>';
Personnellement, je ferais avec preg_match.
// par exemple, les termes recuperes sont comme: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
$server_agent = $_SERVER['HTTP_USER_AGENT']; 

$selectsp = "SELECT * FROM spiders";

while ($numsp = mysql_fetch_assoc($selectsp)) {
$spider_name = $numsp['spider_name'];

// C'est possible qu'il faille supprimer les quotes sur la variable $server_agent. Pas testé
if (preg_match("/'.$server_agent.'/i", $spider_name)) {

echo 'Le bot existe dans la base';
}
}

A+ ;)

Recherche d'un mot

par Fredy07 » 08 mai 2010, 19:37

Bonjour,

Je voudrais rechercher un mot qui est dans ma table s'il est present dans une phrase:

table des robots:
create table spiders
id, spider_name
1, AskJeeves
2, Googlebot
Si un robot entre au site je recupere les infos comme suite:
$server_agent = $_SERVER['HTTP_USER_AGENT']; // par exemple, les termes recuperes sont comme: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
$selectsp = "SELECT * FROM spiders WHERE spider_name LIKE '%$server_agent%'";
$numsp = mysql_num_rows($querysp);
echo 'num '.$numsp.'<br>';
Ca ne retourne rien, c'est quoi la requete a utiliser?

Merci d'avance