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

Eléphant du PHP | 95 Messages

15 mai 2009, 10:00

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 !
Je veux apprendre !!

Mammouth du PHP | 693 Messages

15 mai 2009, 10:10

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.

Eléphant du PHP | 95 Messages

15 mai 2009, 12:20

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...
Je veux apprendre !!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 mai 2009, 14:11

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.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...