Recherche une astuce MySQL
pyranhaz
Messages postés
38
Date d'inscription
Statut
Membre
Dernière intervention
-
flokocha Messages postés 1510 Date d'inscription Statut Membre Dernière intervention -
flokocha Messages postés 1510 Date d'inscription Statut Membre Dernière intervention -
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();
}
?>
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:
- Recherche une astuce MySQL
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Je recherche une chanson - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Mysql community server - Télécharger - Bases de données
1 réponse
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:
(De plus tu avais une parenthèse fermante en trop dans ton code)
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)