Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: seek3r en 12 Agosto 2015, 20:39 pm



Título: [Resuelto] Banip.php
Publicado por: seek3r en 12 Agosto 2015, 20:39 pm
Que tal amigos, les hago una pregunta, necesito hacer un script PHP, qe una ves qe el usuario lo visite, agregue su IP a un fichero (ips.txt) y que luego cuando vuelva a entrar si se comprueba qe esta la IP, que no lo deje entrar. Se entiende ? esto es lo qe hice pero por alguna razon no funciona soy bastante nuevo en el tema de PHP.

Este es el POST.php (Una ves qe el usuario emitio un formulario, se agrega la IP a ips.txt)
Creo que esta bien esta parte del codigo.

Código:
<?php
$ip = getenv("REMOTE_ADDR");
  $file = fopen("ips.txt", "a");
  $data = $ip . PHP_EOL;
  fwrite($file, $data);
  fclose($file);
?>

Ahora el Index.php
Seria que antes de mostrar la pagina, el script verifique si esta bloqueado o no, y no lo deje entrar.

Código:
<?php
echo "PRUEBA";

$deny_ips = array(file_get_contents('ips.txt'));
// read user ip adress:
$ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : '';
 
// search current IP in $deny_ips array
if ( (array_search($ip, $deny_ips))!== FALSE ) {
 // address is blocked:
 echo 'Your IP adress ('.$ip.') was blocked!';
 exit;
}

Ese array file get contents lo invente yo jajaja, no se por que noanda, por favor responder a la brevedad muchas gracias!


Título: Re: Una pequeña duda!
Publicado por: engel lex en 12 Agosto 2015, 20:53 pm
yo que tu lo haría así

Código
  1. <?php
  2. echo "PRUEBA";
  3.  
  4. $deny_ips = array(file_get_contents('ips.txt'));
  5. // read user ip adress:
  6. $ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : '';
  7.  
  8. // search current IP in $deny_ips array
  9. if ( (strpos($deny_ips,$ip) )!== FALSE ) {
  10. // address is blocked:
  11. echo 'Your IP adress ('.$ip.') was blocked!';
  12. }

ya que file_get_contents retorna un string, no un array


Título: Re: Una pequeña duda!
Publicado por: seek3r en 12 Agosto 2015, 21:06 pm
yo que tu lo haría así

Código
  1. <?php
  2. echo "PRUEBA";
  3.  
  4. $deny_ips = array(file_get_contents('ips.txt'));
  5. // read user ip adress:
  6. $ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : '';
  7.  
  8. // search current IP in $deny_ips array
  9. if ( (strpos($deny_ips,$ip) )!== FALSE ) {
  10. // address is blocked:
  11. echo 'Your IP adress ('.$ip.') was blocked!';
  12. }

ya que file_get_contents retorna un string, no un array

Me devuelve esto la pagina

Código:
PRUEBA
Warning: strpos() expects parameter 1 to be string, array given in /home/u450307674/public_html/test/index.php on line 9
Your IP adress (1**.194.***.**) was blocked!


Título: Re: Una pequeña duda!
Publicado por: engel lex en 12 Agosto 2015, 21:11 pm
sorry! se me pasó el casting a array loco que hiciste

Código
  1. <?php
  2. echo "PRUEBA";
  3.  
  4. $deny_ips = file_get_contents('ips.txt');
  5. // read user ip adress:
  6. $ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : '';
  7.  
  8. // search current IP in $deny_ips array
  9. if ( (strpos($deny_ips,$ip) )!== FALSE ) {
  10. // address is blocked:
  11. echo 'Your IP adress ('.$ip.') was blocked!';
  12. }


Título: Re: Una pequeña duda!
Publicado por: seek3r en 12 Agosto 2015, 22:40 pm
Muchas gracias funciona perfecto! .