Php, recherche bdd marche pas :°
dededede4
Messages postés
235
Date d'inscription
Statut
Membre
Dernière intervention
-
dededede4 Messages postés 235 Date d'inscription Statut Membre Dernière intervention -
dededede4 Messages postés 235 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Donc, je mets se script, qui est sansé dire qu'une IP est acépter ou pas, si elle est refusée, elle est dans la BDD.
Au début, c'est OK, mon IP est acépter.
Ensuite, je mais mon IP dans la BDD, mais sa m'affiche quelle est acépter >.<
Quesqui ne vas pas ?
Donc, je mets se script, qui est sansé dire qu'une IP est acépter ou pas, si elle est refusée, elle est dans la BDD.
Au début, c'est OK, mon IP est acépter.
Ensuite, je mais mon IP dans la BDD, mais sa m'affiche quelle est acépter >.<
Quesqui ne vas pas ?
<?php mysql_connect("***", "***", "***"); // Connexion à MySQL mysql_select_db("i154325"); // Sélection de la base $plageIP = mysql_query("SELECT * FROM plageIP"); $plageIP=array("deb"=>"127.0.0.0","fin"=>"127.254.254.254"); //$plageIP="192.168.0.180"; $yourIP=$_SERVER['REMOTE_ADDR']; //$yourIP="192.168.0.180"; echo "Votre IP est : ".$yourIP; if(verifPlageIP($yourIP,$plageIP)) { echo "<p>Votre adresse IP n'appartient pas à la plage réseau autorisé!"; } else { echo "<p> Votre adresse IP est valide!"; } // et le code permetaant la vérifcation function verifPlageIP($IP,$PlageIP) { $result=TRUE; $tabIP=explode(".",$IP); /*echo "<p>tabIP:<br><pre>"; print_r($tabIP); echo "</pre>";*/ if(is_array($PlageIP)) { /*echo "<p>PlageIP:<br><pre>"; print_r($PlageIP); echo "</pre>";*/ foreach($PlageIP as $valeur) { $tabPlageIP[]=explode(".",$valeur); } for($i=0;$i<4;$i++) { if(($tabIP[$i]<$tabPlageIP[0][$i]) || ($tabIP[$i]>$tabPlageIP[1][$i])) { $result=FALSE; } } } else { $tabPlageIP=explode(".",$PlageIP); /*echo "<p>tabPlageIP:<br><pre>"; print_r($tabPlageIP); echo "</pre>";*/ for($i=0;$i<4;$i++) { if(($tabIP[$i]!=$tabPlageIP[$i])) { $result=FALSE; } } } return ($result); } mysql_close(); // Déconnexion de MySQL ?>
A voir également:
- Php, recherche bdd marche pas :°
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Easy php - Télécharger - Divers Web & Internet
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Recherche photo - Guide
- Je recherche une chanson - Guide
6 réponses
Bonjour.
Premier point : tu n'utilises pas ta BDD, donc forcément ça ne sert à rien de rajouter une adresse dedans pour la bloquer !
Deuxième point : comment est organisée ta table ? Quels sont les champs ?
Parce que ton système d'explode etc. me semble un peu lourd...
Avec ton code, si mon adresse est du type 127.*.*.* , elle est considérée comme bloquée, sinon elle est OK. C'est bien ce que tu veux ?
Une fonction qui pourrait te servir, si tu travailles sur des "blocs" d'adresses, c'est ip2long($AdresseIP), qui renvoie l'entier correspondant.
Premier point : tu n'utilises pas ta BDD, donc forcément ça ne sert à rien de rajouter une adresse dedans pour la bloquer !
Deuxième point : comment est organisée ta table ? Quels sont les champs ?
Parce que ton système d'explode etc. me semble un peu lourd...
Avec ton code, si mon adresse est du type 127.*.*.* , elle est considérée comme bloquée, sinon elle est OK. C'est bien ce que tu veux ?
Une fonction qui pourrait te servir, si tu travailles sur des "blocs" d'adresses, c'est ip2long($AdresseIP), qui renvoie l'entier correspondant.
Merci ;)
Fait fait des recherche avec se que tu ma dit, et j'ai trouver beaucoup plus simple :
Je voudrait savoir si sa marcherais :
$ips_bannies = array($ip_ban);
$ip_ban contient les IP venant de la bdd.
Merci ;)
Fait fait des recherche avec se que tu ma dit, et j'ai trouver beaucoup plus simple :
$ips_bannies = array('xxx.xxx.xxx.xxx', 'yyy.yyy.yyy.yyy'); if(in_array($_SERVER['REMOTE_ADDR'], $ip_bannies)) { header('Location:banni.php'); exit(); }
Je voudrait savoir si sa marcherais :
$ips_bannies = array($ip_ban);
$ip_ban contient les IP venant de la bdd.
Merci ;)
>.<
Warning: in_array() [function.in-array]: Wrong datatype for second argument in /data/www/sites/1/idoo.com/d/e/dex4/site/index.php on line 9
Warning: in_array() [function.in-array]: Wrong datatype for second argument in /data/www/sites/1/idoo.com/d/e/dex4/site/index.php on line 9
<?php
mysql_connect("***", "***", "***"); // Connexion à MySQL
mysql_select_db("***"); // Sélection de la base
$plageIP = mysql_query("SELECT * FROM plageIP");
$ips_bannies = array('$plageIP');
if(in_array($_SERVER['REMOTE_ADDR'], $ips_bannies)) {
header('Location:banni.php');
exit();
}
mysql_close(); // Déconnexion de MySQL
?>
<H1> Bravo !!! T'est pas banni ;) <H1>
Mon IP est dans la bdd mais sa marche pas ; Jsuis sur que je suis noob >.< :D
mysql_connect("***", "***", "***"); // Connexion à MySQL
mysql_select_db("***"); // Sélection de la base
$plageIP = mysql_query("SELECT * FROM plageIP");
$ips_bannies = array('$plageIP');
if(in_array($_SERVER['REMOTE_ADDR'], $ips_bannies)) {
header('Location:banni.php');
exit();
}
mysql_close(); // Déconnexion de MySQL
?>
<H1> Bravo !!! T'est pas banni ;) <H1>
Mon IP est dans la bdd mais sa marche pas ; Jsuis sur que je suis noob >.< :D
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question$plageIP = mysql_query("SELECT * FROM plageIP"); $ips_bannies = array('$plageIP');
Où as-tu vu ce code ? Effectivement, ça ne risque pas de fonctionner !
Tu définis $ips_bannies comme un tableau qui contient la chaîne de caractères '$plageIP'.
Le code générique pour interroger une BDD en php :
mysql_connect($serveur, $user, $password) or die ('Erreur de connexion au serveur: '.mysql_error()); // Connexion à MySQL mysql_select_db($db) or die ('Erreur de connexion sur la base : '.mysql_error()); // Sélection de la base $requete = mysql_query($marequete) or die ('Erreur de requête : '.mysql_error()); while ($ligne = mysql_fetch_array($requete) { // Pour chaque enregistrement renvoyé par la requête <traitement> }
Dans ton cas, tu peux encore simplifier le code, en faisant une requête qui va chercher les enregistrements dans lesquels il y a l'adresse ip que tu cherches. Ensuite, il suffit de compter le nombre de lignes retournées avec mysql_num_rows($requete). S'il n'y en a pas, c'est que l'adresse n'est pas bannie...
Par contre, ça nécessite de faire une ligne par adresse (et pas par plage).
Voici une possibilité (j'en ai profité pour rajouter des or die, comme ça si la fonction plante, tu affiche un message d'erreur parlant...)
mysql_connect("***", "***", "***") or die ('Erreur de connexion à la base : '.mysql_error()); // Connexion à MySQL mysql_select_db("***") or die ('Erreur sur la base : '.mysql_error()); // Sélection de la base $plageIP = mysql_query("SELECT IP FROM plageIP WHERE IP='".$_SERVER['REMOTE_ADDR']."'") or die ('Erreur de requête : '.mysql_error()); if (mysql_num_rows($plageIP) > 0) { header('Location:banni.php'); exit(); } else { echo "<H1> Bravo !!! T'est pas banni ;) <H1>"; }
Si tu veux gérer des plages d'adresses bannies (genre de 132.0.0.1 à 132.10.0.240), je te conseille de modifier ta table :
CREATE TABLE `plagesIP` ( `id` TINYINT NOT NULL AUTO_INCREMENT , `debut_ip` INT NOT NULL , `fin_ip` INT NOT NULL , PRIMARY KEY ( `id` ) );
Ensuite tu insère les IP en format numérique avec ip2long($ip).
Pour ta requête, il suffira de faire
$ip = ip2long($_SERVER['REMOTE_ADDR']); $requete = mysql_query("SELECT * from plagesIP WHERE debut_ip <= ".$ip." AND fin_ip >= '.$ip);