PHP problème d'ip
Résolu/Fermé
crocoscore
Messages postés
165
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
3 février 2015
-
28 juin 2009 à 17:34
crocoscore Messages postés 165 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 3 février 2015 - 28 juin 2009 à 18:27
crocoscore Messages postés 165 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 3 février 2015 - 28 juin 2009 à 18:27
A voir également:
- PHP problème d'ip
- Ethernet n'a pas de configuration ip valide - Guide
- Télévision ip - Accueil - Streaming
- Comment connaître son adresse ip - Guide
- IPTV illégal : après les pirates, la justice condamne maintenant les clients… jusqu'à la prison ! - Guide
- Comment savoir si quelqu'un utilise mon adresse ip - Guide
4 réponses
Yoan
Messages postés
11795
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
10 décembre 2023
2 330
28 juin 2009 à 17:55
28 juin 2009 à 17:55
Ca marche pas ce truc-là.
IL faut comprendre que ce qu'il y a dans le while {ICI} est une boucle :
L'affectation $lips = ($donnees['ip']); va se faire plusieurs fois tant que $donnees = mysql_fetch_array($reponse) n'est pas nul (c'est à dire tant qu'il y a des entrées dans la table).
Ton code fonctionne bien s'il n'y a qu'une adresse bannie, ou si l'adresse bannie est la dernière renvoyée par MySQL.
Donc while ($donnees = mysql_fetch_array($reponse) )
{
$lips = ($donnees['ip']);
}
ça veut dire : "tant qu'il y a des adresses dans la table, tu fais $lips = ($donnees['ip']);
Ce qu'il faudrait faire pour que ça marche, c'est à l'intérieur de la boucle, vérifier si l'adresse du visiteur est bannie, et le cas échéant sortir de la boucle et afficher le message adhéquat.
Mais il y a beaucoup mieux. Utilise la clause WHERE en SQL pour sélectionner l'adresse du visiteur, si MySQL ne retourne aucun résultat ça veut dire que l'utilisateur n'est pas banni, dans le cas contraire il l'est :
Utilise mysql_num_rows pour voir combien de résultats sont retournés par la requête.
D'autre part plutôt que d'imprimer un meta fais plutôt un include pour rediriger l'utilisateur :
IL faut comprendre que ce qu'il y a dans le while {ICI} est une boucle :
L'affectation $lips = ($donnees['ip']); va se faire plusieurs fois tant que $donnees = mysql_fetch_array($reponse) n'est pas nul (c'est à dire tant qu'il y a des entrées dans la table).
Ton code fonctionne bien s'il n'y a qu'une adresse bannie, ou si l'adresse bannie est la dernière renvoyée par MySQL.
Donc while ($donnees = mysql_fetch_array($reponse) )
{
$lips = ($donnees['ip']);
}
ça veut dire : "tant qu'il y a des adresses dans la table, tu fais $lips = ($donnees['ip']);
Ce qu'il faudrait faire pour que ça marche, c'est à l'intérieur de la boucle, vérifier si l'adresse du visiteur est bannie, et le cas échéant sortir de la boucle et afficher le message adhéquat.
Mais il y a beaucoup mieux. Utilise la clause WHERE en SQL pour sélectionner l'adresse du visiteur, si MySQL ne retourne aucun résultat ça veut dire que l'utilisateur n'est pas banni, dans le cas contraire il l'est :
$ip=$_SERVER["REMOTE_ADDR"]; mysql_query("SELECT * FROM ip WHERE ip='$ip'");
Utilise mysql_num_rows pour voir combien de résultats sont retournés par la requête.
D'autre part plutôt que d'imprimer un meta fais plutôt un include pour rediriger l'utilisateur :
include('./fichier/ban.html'); exit();
Yoan
Messages postés
11795
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
10 décembre 2023
2 330
28 juin 2009 à 18:20
28 juin 2009 à 18:20
<?php mysql_connect("localhost", "root", ""); mysql_select_db("coursphp"); $ip=$_SERVER["REMOTE_ADDR"]; // IP du visiteur courant $reponse = mysql_query("SELECT * FROM ip WHERE ip='$ip'"); if(mysql_num_rows($reponse)!=0) { //cas où la sélection a renvoyé au moins un résultat i.e. cette IP est bannie include('./fichier/ban.html'); exit(); } mysql_close(); ?>
crocoscore
Messages postés
165
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
3 février 2015
5
28 juin 2009 à 18:11
28 juin 2009 à 18:11
Peux tu me montrer stp? C'est pas que je sois flemmare, mais je ne gère pas très bien de PHP
Merci
Merci
crocoscore
Messages postés
165
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
3 février 2015
5
28 juin 2009 à 18:27
28 juin 2009 à 18:27
Merci beaucoup de ta réponse rapide est surtout: Très efficace!
Bonne soirée, je boucle de topic.
Bonne soirée, je boucle de topic.