[RESOLU] Bannir IP et les intégrer dans un fichier lisible par fonction

Eléphant du PHP | 103 Messages

06 déc. 2015, 16:46

Bonjour,
Voila, j'ai mon site (http://racacaxtv.ga) et je suis obligé de bloquer des IP visitant le fichier liste.php car certaines récupères des tokens de protection de certains flux. Cela entraine des ralentissements car plus de monde est dessus et ça monte vite : utilisateurs de mes services + utilisateurs des services piquant les flux = beaucoup. Du coup, je fais ceci :
if (isset($_SERVER['REMOTE_ADDR']) && ($_SERVER['REMOTE_ADDR'] == 'une ip || $_SERVER['REMOTE_ADDR'] == 'une ip' || $_SERVER['REMOTE_ADDR'] == 'une ip'))	{ ?>500<?php } else { ?>la page<?php } ?>
Le problème, je ne suis pas obligatoirement sur mon ordinateur et modifier le code est assez dur sur portable ou tablette. Du coup, je me suis dit que de créer un script qui en entrant l'IP et en appuyant sur OK intégrait l'IP dans une liste, ça serait facile. J'ai déjà fait le code :
<?php 
$file = 'banned.txt';
$person = $_POST['ip'].' / ';
@$gens = file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
?>
Mais là, je suis bloqué, comment faire pour que le if(isset) de la page liste.php lise le fichier banned.txt et affiche 500 pour chaque IP après chaque slash ?

Une solution ?

Merci d'avance

PS : pour les petits curieux ayant des idées méchantes, le fichier pour bannir des IP serait protégé par un mot de passe :P

Mammouth du PHP | 2703 Messages

06 déc. 2015, 16:52


Eléphant du PHP | 103 Messages

06 déc. 2015, 17:11

Merci,
J'ai changé le fonctionnement en mettant une IP à chaque ligne car ça doit être plus simple. Je vois comment utiliser les deux premières mais pas in-array, des explication ?

Eléphant du PHP | 103 Messages

06 déc. 2015, 18:28

Ou sinon, est-il possible par un str_replace de modifier le fichier liste.php via le script permettant d'ajouter une IP banni. Je m'explique. j'intègre l'IP 1.1.1.1 aux IP bannies, il serait peut-être possible d'éditer le fichier liste.php et que || $_SERVER['REMOTE_ADDR'] == '1.1.1.1' s'ajoute avant (ou après) || $_SERVER['REMOTE_ADDR'] == '2.2.2.2' par un code comme celui-ci :
$feed = "$variable";
	$conversion = array("$_SERVER['REMOTE_ADDR'] == '2.2.2.2'"=>"$_SERVER['REMOTE_ADDR'] == '".$_POST['ip']."' || $_SERVER['REMOTE_ADDR'] == '2.2.2.2'");
	$feed = strtr($feed,$conversion);
mais comment faire pour modifier un fichier par un autre script, je sais ajouter des données (à la fin d'un fichier) mais pas les remplacer par d'autres.

Eléphant du PHP | 103 Messages

06 déc. 2015, 19:36

Donc, j'ai décidé de mettre toutes es données dans un fichier txt et de mettre la fonction include dans le fichier liste.php. J'ai avancé et j'ai maintenant ce code :
<?php
    $fichier="nomdufichier.txt"; // Nom du fichier à modifier

        if(isset($_POST['boutton'])) {    
     
        $ouverture=fopen("$fichier","w"); // Création du nouveau fichier et ouverture du fichier avec le mode w 
        $dzs = file_get_contents('http://racacaxtv.ga/nomdufichier.txt');
        $feed = "$dzs";
        $conversion = array('$_SERVER[\'REMOTE_ADDR\'] == \'160.92.56.21\''=>'$_SERVER[\'REMOTE_ADDR\'] == \''.$_POST['modif'].'\' || $_SERVER[\'REMOTE_ADDR\'] == \'160.92.56.21\'');
        $feed = strtr($feed,$conversion);
        fwrite($ouverture,"$feed"); // ecriture
        fclose($ouverture); // fermeture du fichier
        echo '<h2>IP bannie !</h2>'; // Affichage validation
        }

?>
    <form method="post" action=""> 
    <input name="modif"></input>
    <br/><input type="submit" name="boutton" value="Bannir">
    </form>
Mais là, encore un problème ! Lorsque je valide, le fichier txt des données est vide. Je ne comprend pas. J'ai déjà testé avec un echo sans poster les données dans le fichier et les données étaient correctes. Qu'est-ce qui bloque ?
Là je pense que c'est la fin du problème.

Eléphant du PHP | 103 Messages

06 déc. 2015, 19:47

C'est bon, problème résolu, il fallait mettre le file_get_contents et les strtr avant le if isset