Php + mysql. Besoin d'une aide
Résolu/Fermé
Edouard73
Messages postés
139
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
2 avril 2013
-
21 oct. 2008 à 17:02
Edouard73 Messages postés 139 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 2 avril 2013 - 22 oct. 2008 à 12:14
Edouard73 Messages postés 139 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 2 avril 2013 - 22 oct. 2008 à 12:14
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
- Error 2002 (hy000): can't connect to local mysql server through socket '/var/lib/mysql/mysql.sock' (2) ✓ - Forum Linux / Unix
- Mysql gratuit ou payant - Forum MySQL
- Mysql error 1 ✓ - Forum Réseaux sociaux
1 réponse
macgawel
Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
89
21 oct. 2008 à 17:32
21 oct. 2008 à 17:32
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) { ... }
22 oct. 2008 à 12:10
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>";
}
?>
22 oct. 2008 à 12:14
<?
$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>";
}
?>