Recherche une astuce MySQL

Fermé
pyranhaz Messages postés 38 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 2 février 2008 - 18 mars 2004 à 16:50
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 - 18 mars 2004 à 19:40
Bonjour,

J'ai de listé les "user_agent" des différents robots de référencements les + connus (181 au total)

J'ai mis au point un anti-aspirateur de site et je voudrais éviter que les robots tombent dedans...

Le fichier robots.txt destiné aux robots n'est point efficace...

Donc, si je pouvais inclure un fichier php enumérant le "user-agent" accepté qui ne doivent pas êtres bannis par l'anti-aspirateur, il n'y aurait plus AUCUNE chance que ces robots soient bloqués par mon anti-aspirateur...

J'ai donc créé une table MySQL nommé "rs_robots" avec une colonne "user_agent"

Maintenant, je cherche à créé l'appel MySQL qui me permettra de lui dire que si le "user_agent" détecté par "$HTTP_USER_AGENT" ne correspond pas avec ce que contient la base de donnée, tu redirige le visiteur vers la page "ban.php"

Vous me suivez ???

là où je me perd c'est comment indiqué à MySQL la fonction "différent de" normalement c'est par une exclamation "!" mais ca ne semble pas fonctionner (voir la partie en gras)

voici donc ce que j'ai fais jusqu'à maintenant dans le fichier "Agent.php" qui sera inclus dans chacune des pages du site:
<?php

//parametre de connection a la base de données
$host="sql";
$user="user";
$pass="pass";
$name="base1";
$table="rs_robots";


//recuperation du user-agent
$agent = $HTTP_USER_AGENT;


//connection a la base de données
$ic = mysql_connect($host,$user,$pass) or print mysql_error();
//selection de la base de données
mysql_select_db($name) or print mysql_error();

if ($ic <> 0)
{

// chercher si l'agent correspond à un de la liste
$res = mysql_query("SELECT user_agent FROM rs_robots WHERE user_agent='$agent'") or print mysql_error();
while (list($user_agent) ! mysql_fetch_row($res)))
{
// agent non trouvé dans la liste
//liberation du resultat de la requette
mysql_free_result($res) or print mysql_error();
//fermeture de la connection a la base de données
mysql_close($ic) or print mysql_error();
//en envoie la page ban.html au client
include ($HTTP_SERVER_VARS["DOCUMENT_ROOT"]."/ban.php");
// on ferme le script sans afficher le reste de la page demander
die("");
}
mysql_free_result($res) or print mysql_error();

mysql_close($ic) or print mysql_error();
}
?>
A voir également:

1 réponse

flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 280
18 mars 2004 à 19:40
là où je me perd c'est comment indiqué à MySQL la fonction "différent de" normalement c'est par une exclamation "!" mais ca ne semble pas fonctionner (voir la partie en gras)

Mais le signe "différent de" ici ne fait pas partie de MySQL mais de la commande PHP non?
Il faut donc mettre:
while (list($user_agent) !=  mysql_fetch_row($res))


(De plus tu avais une parenthèse fermante en trop dans ton code)
0