j'ai un fichier texte dans lequel sont noté les membres bannis des serveurs de jeux de ma team.
il a la forme:
pseudo;ip;raison
ex:
Code : Tout sélectionner
gign;83.194.18.106;Raison Inconnue
°•.£ørÐ.•°ÐëÐøûm;81.250.24.66;Cheat
Balalaikanicolavitch;83.148.148.2;Raison Inconnue
endcomment retirer les lignes dont l'ip est présente dans mon tableaux $_POST['ip']? Merci de votre aide. Ci dessous ma page:
<?
$pass = "test";
$fichier = "bans.txt"; // Nom de votre fichier
function affichage($fichier)
{
$bgcolor1 = "#" . $_GET['bgcolor1'];
$bgcolor2 = "#" . $_GET['bgcolor2'];
$bgcolor3 = "#" . $_GET['bgcolor3'];
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">"
. "<html xmlns=\"http://www.w3.org/1999/xhtml\">"
. "<head>"
. "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />"
. "<title>liste bannis</title>"
. "<style type=\"text/css\">"
. "<!--"
. ".titre {"
. " font-size: 18px;"
. " color: #FF0000;"
. "}"
. "-->"
. "</style>"
. "</head>"
. "<body>"
. "<form method=\"post\" action=\"ban3.php?pass=" . $_GET['pass'] . "&bgcolor1=" . $_GET['bgcolor1'] . "&bgcolor2=" . $_GET['bgcolor2'] . "&bgcolor3=" . $_GET['bgcolor3'] . "\">\n"
. "<div align=\"center\"><strong><big>Liste Joueurs Bannis</big></strong><br />"
. "<table style=\"background: " . $bgcolor2 . ";border: 1px solid " . $bgcolor3 . ";\" cellpadding=\"2\" cellspacing=\"1\">\n"
. "<tr style=\"background: " . $bgcolor3 . ";\">\n"
. "<td> </td>\n"
. "<td><strong>IP</strong></td>\n"
. "<td><strong>Pseudo</strong></td>\n"
. "<td><strong>Raison</strong></td></tr>\n";
$fp = fopen($fichier,"r"); // Ouverture du fichier en lecture
while (!feof($fp))
{ // Parcours du fichier
$ligne = fgets($fp,4000); // On récupère la ligne
preg_match('`(.*);([[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3});(.*)`',$ligne,$resultat);
if (count($resultat) == 4)
{
if (isset($j))
{
$bg = $bgcolor2;
unset($j);
}
else
{
$bg = $bgcolor1;
$j = 1;
}
echo "<tr style=\"background: " . $bg . ";\">\n"
. "<td><input type=\"checkbox\" class=\"checkbox\" name=\"ip[]\" value=\"" . $resultat[2] . "\" /></td>\n"
. "<td>" . $resultat[2] . "</td>\n"
. "<td>" . $resultat[1] . "</td>\n"
. "<td>" . $resultat[3] . "</td></tr>\n";
}
}
fclose($fp);
echo "</table><input name=\"ok\" type=\"submit\" value=\"Débannir Joueurs Selectionnés\" /> "
. "</form></div><br /></body>"
. "</html>";
}
function delip($fichier)
{
$bak = "save/" . date("d.m.Y-H.i.s") . "_" . $fichier;
copy($fichier,$bak);
echo "<br /><div align=\"center\"><strong>Joueurs débannis!</strong><br /><br />";
$fp = fopen($bak,"r"); // Ouverture du fichier en lecture
$fp_temp = fopen("bans.txt","w+"); // Ouverture du fichier temporaire
//while
$nbip = count($_POST['ip']);
echo "tttt " . $nbip . " tttt";
while (!feof($fp))
{
$ligne = fgets($fp,4000); // On récupère la ligne
$nbipt = 0;
$ipfound == false;
while($nbipt < $nbip)
{
if ($ipfound == false)
{
$ipfound = strpos($ligne,$_POST['ip'][$nbipt]);
}
$nbipt++;
}
if ($ipfound == false)
{
fwrite($fp_temp,$ligne);
}
}
fclose($fp);
fclose($fp_temp);
}
if (!isset($_GET['pass']) || ($_GET['pass'] != $pass))
{
die("Page protégé");
} else
{
if (isset($_POST['ip']))
{
delip($fichier);
}
affichage($fichier);
}
?>
Mauvais code: function delip($fichier)
{
$bak = "save/" . date("d.m.Y-H.i.s") . "_" . $fichier; //emplacement ou faire sauvegarde
copy($fichier,$bak); // creation sauvegarde
echo "<br /><div align=\"center\"><strong>Joueurs débannis!</strong><br /><br />";
$fp = fopen($bak,"r"); // Ouverture du fichier en lecture
$fp_temp = fopen("bans.txt","w+"); // Ouverture du fichier temporaire pour ecrire resultat
$nbip = count($_POST['ip']); // on compte le nb d'ip a effacer car $_POST['ip'] contient le tableau des ip cochés pour etre effacé
while (!feof($fp)) //on lis le fichier jusqu'a la fin
{
$ligne = fgets($fp,4000); // On récupère la ligne
$nbipt = 0; //on initialise le nombre d'ip tester
$ipfound == false; // on initialise comme quoi l'ip n'est pas trouvé
while($nbipt < $nbip) // tant quon a pas tester toute les ips a effacer on essaye de la trouver dans la ligne
{
if ($ipfound == false) // si on trouve pas on ressaye avec ip du tabeau suivante
{
$ipfound = strpos($ligne,$_POST['ip'][$nbipt]);
}
$nbipt++; // on augmente le nb d'ip tester
}
if ($ipfound == false) // si apres avoir tester toute les ip du tableau $_POST['ip'] et que sa a oujours été negatif pas de position trouvé
{
fwrite($fp_temp,$ligne); //on écrit la ligne dans le nouveau fichier
}
}
fclose($fp); //on ferme la sauvegarde
fclose($fp_temp); // on ferme le nouveau fichier
}
merci.