Php + mysql. Besoin d'une aide
Résolu
Edouard73
Messages postés
139
Date d'inscription
Statut
Membre
Dernière intervention
-
Edouard73 Messages postés 139 Date d'inscription Statut Membre Dernière intervention -
Edouard73 Messages postés 139 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voila je crée un script php / mysql por bannir des ip. bon tous marche cependant. mysql autorise le ban que de la première IP. et pas les autres. Pouvez vous regarder mes codes et me dire se que je dois changer ?
merci
<?
mysql_connect("localhost", "loggin", "password");
mysql_select_db("usbf_usbfrance");
$reponse = mysql_query('SELECT * FROM banni_fr');
while($donnees = mysql_fetch_array($reponse))
{
$banni = $donnees['ip'];
}
mysql_close();
$comA = addslashes ($_POST['comA']);
$nom = addslashes ($_POST['nom']);
$url = addslashes ($_POST['url']);
$mail = addslashes ($_POST['mail']);
$ip = $_SERVER['REMOTE_ADDR'];
$contenu = stripslashes ($_POST['contenu']);
if ($banni == $ip)
{
echo "VOUS ETES BANNI DES COMMANTAIRES... ";
echo "<script language='Javascript'>
function redirect()
{
document.location='http://www.usbfrance.com/
}
setTimeout( 'redirect();', 3000 )
</script>";
}
else
{
echo "MESSAGE AJOUTé, REDIRECTION DANS 3 SECONDES ... ";
echo "<script language='Javascript'>
function redirect()
{
document.location='http://www.usbfrance.com/news/commentaires.php?comA=$comA'
}
setTimeout( 'redirect();', 3000 )
</script>";
}
?>
Voila je crée un script php / mysql por bannir des ip. bon tous marche cependant. mysql autorise le ban que de la première IP. et pas les autres. Pouvez vous regarder mes codes et me dire se que je dois changer ?
merci
<?
mysql_connect("localhost", "loggin", "password");
mysql_select_db("usbf_usbfrance");
$reponse = mysql_query('SELECT * FROM banni_fr');
while($donnees = mysql_fetch_array($reponse))
{
$banni = $donnees['ip'];
}
mysql_close();
$comA = addslashes ($_POST['comA']);
$nom = addslashes ($_POST['nom']);
$url = addslashes ($_POST['url']);
$mail = addslashes ($_POST['mail']);
$ip = $_SERVER['REMOTE_ADDR'];
$contenu = stripslashes ($_POST['contenu']);
if ($banni == $ip)
{
echo "VOUS ETES BANNI DES COMMANTAIRES... ";
echo "<script language='Javascript'>
function redirect()
{
document.location='http://www.usbfrance.com/
}
setTimeout( 'redirect();', 3000 )
</script>";
}
else
{
echo "MESSAGE AJOUTé, REDIRECTION DANS 3 SECONDES ... ";
echo "<script language='Javascript'>
function redirect()
{
document.location='http://www.usbfrance.com/news/commentaires.php?comA=$comA'
}
setTimeout( 'redirect();', 3000 )
</script>";
}
?>
A voir également:
- Php + mysql. Besoin d'une aide
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
- Php alert - Forum PHP
- Mysql a répondu : documentation connexion impossible : paramètres incorrects. - Forum Bases de données
1 réponse
Bonjour.
Le problème vient de là :
$banni contient la valeur de l'IP du dernier enregistrement regardé.
Du coup, quand tu fais ton test IF, tu ne compares l'IP courante ($ip) qu'à la dernière valeur de $banni...
Solutions :
- Mettre le test dans le while. Utilise une variable qui vaut 0 au départ, et que tu mes à 1 si l'IP est reconnue comme une IP bannie.
Après, tu testes la valeur de $banni.
- Mettre les IP bannies dans un tableau,
puis regarder si l'IP étudiée se retrouve dans le tableau
while($donnees = mysql_fetch_array($reponse)) { $banni = $donnees['ip']; }
Le problème vient de là :
TANT QUE j'ai un enregistrement je mets la valeur de IP dans $banni FIN TANT QUE
$banni contient la valeur de l'IP du dernier enregistrement regardé.
Du coup, quand tu fais ton test IF, tu ne compares l'IP courante ($ip) qu'à la dernière valeur de $banni...
Solutions :
- Mettre le test dans le while. Utilise une variable qui vaut 0 au départ, et que tu mes à 1 si l'IP est reconnue comme une IP bannie.
$banni = 0; while($donnees = mysql_fetch_array($reponse)) { if ($ip == $donnees['ip']) { $banni = 1; } }
Après, tu testes la valeur de $banni.
- Mettre les IP bannies dans un tableau,
while($donnees = mysql_fetch_array($reponse)) { $bannis[] = $donnees['ip']; } }
puis regarder si l'IP étudiée se retrouve dans le tableau
if (in_array($ip, $bannis) { ... }
merci pour le code. il m'a permis d'avancer un peu. d'ailleurs il arrive à différencier tous les ip dans le tableau. Ainsi il ne reste pas bloquer au premier. par contre j'ai un soucie d'affichage. Bon j'essaye de corriger mais si en parallèle quelqu'un pourrait m'aider ça serait cool.
Warning: Cannot use a scalar value as an array in /home/usbf/public_html/news/commentairesAjouter.php on line 19
<?
$comA = addslashes ($_POST['comA']);
$nom = addslashes ($_POST['nom']);
$url = addslashes ($_POST['url']);
$mail = addslashes ($_POST['mail']);
$ip = $_SERVER['REMOTE_ADDR'];
$contenu = stripslashes ($_POST['contenu']);
mysql_connect("localhost", "user", "password");
mysql_select_db("usbf_usbfrance");
$reponse = mysql_query('SELECT * FROM banni_fr');
$banni = 0;
while($donnees = mysql_fetch_array($reponse))
{
if ($nom == $donnees['ip'])
{
$banni = 1;
}
$banni[] = $donnees['ip']; //le probleme reside ICI
}
mysql_close();
if ($banni == 1)
{
echo "VOUS ETES BANNI DES COMMANTAIRES... ";
echo "<script language='Javascript'>
function redirect()
{
document.location='http://www.....com/
}
setTimeout( 'redirect();', 3000 )
</script>";
}
else
{
echo "MESSAGE AJOUTé, REDIRECTION DANS 3 SECONDES ... ";
echo "<script language='Javascript'>
function redirect()
{
document.location='http://www.....com/news/commentaires.php?comA=$comA'
}
setTimeout( 'redirect();', 3000 )
</script>";
}
?>
<?
$comA = addslashes ($_POST['comA']);
$nom = addslashes ($_POST['nom']);
$url = addslashes ($_POST['url']);
$mail = addslashes ($_POST['mail']);
$ip = $_SERVER['REMOTE_ADDR'];
$contenu = stripslashes ($_POST['contenu']);
mysql_connect("localhost", "user", "password");
mysql_select_db("database");
$reponse = mysql_query('SELECT * FROM banni_fr');
$banni = 0;
while($donnees = mysql_fetch_array($reponse))
{
if ($ip== $donnees['ip'])
{
$banni = 1;
}
}
while($donnees = mysql_fetch_array($reponse))
{
$banni[] = $donnees['ip'];
}
mysql_close();
if ($banni == 1)
{
echo "VOUS ETES BANNI DES COMMANTAIRES... ";
echo "<script language='Javascript'>
function redirect()
{
document.location='http://www.....com/
}
setTimeout( 'redirect();', 3000 )
</script>";
}
else
{
echo "MESSAGE AJOUTé, REDIRECTION DANS 3 SECONDES ... ";
echo "<script language='Javascript'>
function redirect()
{
document.location='http://www.....com/news/commentaires.php?comA=$comA'
}
setTimeout( 'redirect();', 3000 )
</script>";
}
?>