Page 1 sur 1

Vérifier si une valeur est présente dans une table

Posté : 15 mai 2009, 10:00
par dmx-moteur
Bonjour à tous,

Afin de me prémunir contre le pillage systématique de ma base de données par un site tiers, je souhaite vérifier qu'une même adresse IP ne demande pas plus de 15 fois un certain type de page sur mon site et ne pas afficher les infos si la condition est vraie. Mais je bloque. Voici mon code :
mysql_select_db($database_site, $site);
$query_RS_securisation3 = "SELECT ip, COUNT(ip) as nb_occurence FROM table GROUP BY ip ORDER BY nb_occurence DESC";
$RS_securisation3 = mysql_query($query_RS_securisation3, $site) or die(mysql_error());
$row_RS_securisation3 = mysql_fetch_assoc($RS_securisation3);
$totalRows_RS_securisation3 = mysql_num_rows($RS_securisation3); 

// si la machine demandeuse a une adresse IP qui correspond à la requête et si la valeur de nb_occurence est > à 15
if (($row_RS_securisation3['ip'] == $_SERVER["REMOTE_ADDR"]) && ($row_RS_securisation3['nb_occurence'] < "15")) { 
echo "J'affiche les infos...";
} else {
echo "J'affiche pas..."
}
Merci de votre aide, car je suis dessus depuis hier, j'ai testé pas mal de trucs mais, ou ça affiche jamais ou ça affiche tout le temps ce qui n'est évidemment le but !

Posté : 15 mai 2009, 10:10
par orgerix
La, ce que tu fait, c'est que tu regarde l'adresse IP qui a fait le moins de demande et si elle correspond à l'adresse IP qui demande la page et si elle fait moins de 15 connexions.

La condition sur l'adresse IP ne porte pas sur décision (afficher ou non la page) mais sur la récupération d'informations. Elle n'a donc pas sa place dans le if, mais par contre il faut la mettre dans la clause WHERE de ta requète.

Posté : 15 mai 2009, 12:20
par dmx-moteur
Merci. Comme quoi parfois on a tellement la tête dans le guidon qu'on ne voit plus les choses les plus simples !!

Voici le code corrigé :
mysql_select_db($database_site, $site);
$query_RS_securisation3 = "SELECT ip, adrip, COUNT(ip) as nb_occurence FROM secu_offre WHERE ip LIKE '". $_SERVER["REMOTE_ADDR"] ."' GROUP BY ip ORDER BY nb_occurence DESC";
$RS_securisation3 = mysql_query($query_RS_securisation3, $site) or die(mysql_error());
$row_RS_securisation3 = mysql_fetch_assoc($RS_securisation3);
$totalRows_RS_securisation3 = mysql_num_rows($RS_securisation3);

if ($row_RS_securisation3['nb_occurence'] < "15") { 
etc...

Posté : 15 mai 2009, 14:11
par Ryle
Modération :
dmx-moteur, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.