Recherche d'un mot

Eléphant du PHP | 214 Messages

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

Eléphant du PHP | 428 Messages

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+ ;)

Eléphant du PHP | 214 Messages

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

Eléphant du PHP | 428 Messages

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)) {

Eléphant du PHP | 214 Messages

08 mai 2010, 20:25

Toujours la meme erreur

Eléphant du PHP | 428 Messages

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+ ;)