2016-04-30 1 views
0

J'essaye de créer un système d'interdiction pour un chat que j'ai fait et il a une "console" distincte vue seulement par les admins. Im en utilisant Mac OS 10.11.4, je suis le propriétaire et je utilise Mamp avec la version php 5.6.10

Ban.php

<?php 

    $ban = $_POST['ban']; 
    $mybfile = fopen("banned.txt", 'a'); 
    $txtb = ($ban." , "); 

    //Makes sure ip banned it not an admins 
    if (isset($_POST['ban'])) { 
     //example ip addresses 
     if ($ban === '1.1.1.1' || 192.168.1.132) { 
      echo 'Can\'t ban an Admin'; 
     } else { 
      echo 'IP banned'; 
      fwrite($mybfile, $txtb); 
      fclose($mybfile); 
     } 
    } 

    ?> 

    <style> 

     .ban { 
     background-color: black; 
     width:30em; 
     height:5em; 
     color: #7ACC52; 
     } 

     .buttonBAN { 
     border:1px solid black; 
     width: 85px; 
     height: 55px; 
     background-color: white; 
     color: black; 
     position: absolute; 
     } 

    </style> 
    <body> 
    <form method="POST"> 
     BanCMD<br /> 
     <input type="text" name="ban" class="ban"> 
     <input type="submit" value="Enter" class="buttonBAN"> 
    </form> 
    </body> 

Chat.php:

<?php 

    require "blocked.php"; 
    require "connect.inc.php"; 
    require "core.inc.php"; 
    require "commands.php"; 

    $sent = $_POST['chat']; 
    $myfile = fopen("chat.txt", 'a') or die("Unable to open file!"); 
    $txt = ($sent."\n"); 
    $first = getuserfield('username'); 
    $active = ($first.":".$ip_addr); 
    $activef = fopen("ip-user.txt", 'a'); 
    $myFile = "domains/domain_list.txt"; 

    if (loggedin()) { 
     echo 'Welcome, '.$first,'<br />'; 
      if ($first != 'SnR' || 'Koi') { 
       fwrite($activef, $active."\n"."="); 
      } 
     } else if (!loggedin()) { 
      die('Not logged in'); 
    } 

    if (isset($_POST['chat'])) { 
     if (!empty($sent)) { 
      fwrite($myfile, $first.': '.$txt.'='); 
      fclose($myfile); 
     } else if (empty($sent)) { 
      echo 'Cant send an empty message','<br />'; 
     } 
    } 

    $file = "chat.txt"; 
    $linecount = 0; 
    $handle = fopen($file, "r"); 
    while(!feof($handle)){ 
     $line = fgets($handle); 
     $linecount++; 
    } 

    fclose($handle); 

    if ($linecount > 49) { 
     unlink($file); 
    } else { 
     echo 'Line count: '.$linecount,'<br />'; 
    } 

    echo 'Chat will reset at 50 lines','<br />'; 
    echo 'Your IP:'; 
    echo $ip_addr,'<br />'; 

    ?> 
    <html> 
     <head> 
     </head> 
     <body> 
      <!-- <a href='active.txt'>Online users</a><br /> --> 
      <iframe id='reload' src='refresh.php'> 
       <fieldset class="field"> 
         <div id="list"><p><?php 
          $filename = 'chat.txt'; 
          $handle = fopen($filename, 'r'); 

          $detain = fread($handle, filesize($filename)); 

          $chat_array = explode('=', $detain); 

          foreach($chat_array as $chat) { 
           echo $chat.'<br />'; 
          } 
         ?></p></div> 
       </fieldset> 
      </iframe> 
      <form action="chat.php" method="POST"> 
       <input type="text" name="chat" class="textbox"> 
       <input type="submit" value="Send" class="button"> 
      </form> 
     </body> 
    </html> 
    <?php 

     if ($first == 'SnR' && 'Koi') { 
      include 'AdminCMD.php'; 
      include 'ban.php'; 

    ?> 

      <iframe id='reload' src='refresh2.php' class="field2"> 
       <fieldset class="field"> 
       </fieldset> 
      </iframe> 

    <?php 
     } 

    ?> 

Le problème est que tout va bien jusqu'à ce que vous donniez une entrée, peu importe ce que vous mettez dans la boîte la sortie est toujours "Impossible d'interdire un administrateur" ce qui signifie qu'il n'écrit pas dans le fichier donné

Merci pour toute aide .

+0

'($ ban === '1.1.1.1')' changez comme ceci. Est-ce que ça fait la différence? –

+0

Non ça ne fait pas de différence –

+0

'var_dump ($ _POST)' au tout début. Qu'avez-vous pour 'ban'? –

Répondre

0

Votre code contient une erreur empêchant l'écriture du fichier. La première ligne du code PHP, $ban = $_POST['ban'];, peut échouer si aucune donnée n'a été envoyée. Vous devez d'abord vérifier si le $_POST['ban'] a été défini. Une version corrigée de votre code peut être trouvée ci-dessous.

<?php 

    //Makes sure ip banned it not an admins 
    if (isset($_POST['ban'])) { 
     $ban = $_POST['ban']; 
     $mybfile = fopen("banned.txt", 'a'); 
     $txtb = ($ban." , "); 
     if ($ban === '1.1.1.1') { 
      echo 'Can\'t ban an Admin'; 
     } else { 
      echo 'IP banned'; 
      fwrite($mybfile, $txtb); 
      fclose($mybfile); 
     } 
    } 

?> 

<style> 

    .ban { 
     background-color: black; 
     width:30em; 
     height:5em; 
     color: #7ACC52; 
    } 

    .buttonBAN { 
     border:1px solid black; 
     width: 85px; 
     height: 55px; 
     background-color: white; 
     color: black; 
     position: absolute; 
    } 

</style> 
<body> 
    <form method="POST"> 
     BanCMD<br /> 
     <input type="text" name="ban" class="ban"> 
     <input type="submit" value="Enter" class="buttonBAN"> 
    </form> 
</body> 
+0

a toujours le même problème –

+0

@janeboe J'ai exécuté le code localement sur ma machine sans problèmes, il doit y avoir quelque chose de mal avec votre installation PHP. Avez-vous des permissions en écriture sur l'emplacement où le fichier sera sauvegardé? – Flibio

+0

oui je suis l'administrateur/propriétaire de l'ordinateur (Mac OS 10.11.4) et j'utilise la version php 5.6.10 –

0

Quand je courais votre code, il retourne Undefined indexban, vous pouvez essayer et assurez-vous ce qui ne fonctionne pas pour vous.

<?php 
    $ban = isset($_POST['ban']) ? $_POST['ban'] : null; 
    $mybfile = fopen("banned.txt", 'a'); 
    $txtb = ($ban." , "); 

    //Makes sure ip banned it not an admins 
    if(isset($ban)){ 
    if ($ban === '1.1.1.1') { 
       echo 'Can\'t ban an Admin'; 
      } else { 
       echo 'IP banned'; 
       fwrite($mybfile, $txtb); 
       fclose($mybfile); 
      } 
    } 
    ?> 

    <style> 

    .ban { 
    background-color: black; 
    width:30em; 
    height:5em; 
    color: #7ACC52; 
    } 

    .buttonBAN { 
    border:1px solid black; 
    width: 85px; 
    height: 55px; 
    background-color: white; 
    color: black; 
    position: absolute; 
    } 

</style> 

<body> 
<form method="POST"> 
    BanCMD<br /> 
    <input type="text" name="ban" class="ban"> 
    <input type="submit" value="Enter" class="buttonBAN"> 
</form> 
</body> 
+0

qui a fixé l'index indéfini, mais ayant toujours le même problème –