elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Banear ip error PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Banear ip error PHP  (Leído 3,010 veces)
usuario oculto


Desconectado Desconectado

Mensajes: 450



Ver Perfil WWW
Banear ip error PHP
« en: 11 Septiembre 2011, 22:42 pm »

Código
  1. <?php
  2. if (isset( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ])) {  
  3. $ip = $_SERVER [ 'HTTP_X_FORWARDED_FOR' ];  
  4.    }  
  5.    elseif (isset( $_SERVER [ 'HTTP_VIA' ])) {  
  6. $ip = $_SERVER [ 'HTTP_VIA' ];  
  7.    }  
  8.    elseif (isset( $_SERVER [ 'REMOTE_ADDR' ])) {  
  9. $ip = $_SERVER [ 'REMOTE_ADDR' ];  
  10.    }  
  11.    else {  
  12. $ip = "Anonima" ;  
  13.    }    
  14.  
  15. $baneados = file ( "baneados.txt" , "r+" );
  16. $nbaneados = count ( $baneados );
  17. function banear ( $ip , $baneados , $nbaneados ){
  18. for ( $i = 0 ; $i < $nbaneados ; $i ++){
  19. if ( $ip == $baneados [ $i ]){
  20. echo "<br><br><br><br><center> Estas Baneadp de la Web y no Puedes Entrar<br> Envia Un Email al Webmaster para Hablar con el</center>" ;
  21. die();
  22. }
  23. }
  24. }
  25. banear ( $ip , $baneados , $nbaneados );
  26. ?>


Warning: file() expects parameter 2 to be long, string given in /home/l0l.php on line 15


En línea

Que le jodan a  la salud mental!
Fecha de registro:    16 Noviembre 2008, 17:38
años atrás users baneados :)
madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: Banear ip error PHP
« Respuesta #1 en: 11 Septiembre 2011, 23:05 pm »

Creo que es porque no hace falta poner el +r cuando usas file(), los modos de apertura (r+, w, a, etc) se usan con fopen(), con file() no hacen falta.

Por lo que te quedaría así:
$baneados = file ( "baneados.txt" );


En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
usuario oculto


Desconectado Desconectado

Mensajes: 450



Ver Perfil WWW
Re: Banear ip error PHP
« Respuesta #2 en: 12 Septiembre 2011, 00:09 am »

Código
  1. <?php
  2. if (isset( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ])) {  
  3. $ip = $_SERVER [ 'HTTP_X_FORWARDED_FOR' ];  
  4.    }  
  5.    elseif (isset( $_SERVER [ 'HTTP_VIA' ])) {  
  6. $ip = $_SERVER [ 'HTTP_VIA' ];  
  7.    }  
  8.    elseif (isset( $_SERVER [ 'REMOTE_ADDR' ])) {  
  9. $ip = $_SERVER [ 'REMOTE_ADDR' ];  
  10.    }  
  11.    else {  
  12. $ip = "Anonima" ;  
  13.    }    
  14.  
  15. $baneados = file ( "baneados.txt" );
  16. $nbaneados = count ( $baneados );
  17. function banear ( $ip , $baneados , $nbaneados ){
  18. for ( $i = 0 ; $i < $nbaneados ; $i ++){
  19. if ( $ip == $baneados [ $i ]){
  20. echo "<br><br><br><br><center> Estas Baneadp de la Web y no Puedes Entrar<br> Envia Un Email al Webmaster
  21.  
  22. para Hablar con el</center>" ;
  23. die();
  24. }
  25. }
  26. }
  27. banear ( $ip , $baneados , $nbaneados );
  28. ?>

ahora no me tira error, pero no funciona :s  en baneados.txt, tengo ips en lista, la mia incluida  (no sta la primera) y no me sale el mensaje, necesito ayuda porfavor xD enserio, :(, necesito saber como hacerlo
En línea

Que le jodan a  la salud mental!
Fecha de registro:    16 Noviembre 2008, 17:38
años atrás users baneados :)
madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: Banear ip error PHP
« Respuesta #3 en: 12 Septiembre 2011, 00:33 am »

La mitad del código te lo puedes ahorrar, reduciéndolo a esto:

Código
  1. <?php
  2.  
  3. //$ip = $_SERVER [ 'REMOTE_ADDR' ];
  4. $ip = '127.0.0.1';
  5. (in_array ($ip, file('baneados.txt')) ) ? die('Baneado') : die('Usuario tiene acceso');
  6.  
  7. ?>

El problema está en que, al desarrollar en un entorno local (en tu propio PC) la variable IP no toma el valor que debería, en mi caso en el archivo baneados.txt tengo la ip 127.0.0.1.

Pruebalo desde un hosting y pero usando REMOTE_ADDR, para mostrarte que funciona he hardcodeado la variable $ip.
En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.818



Ver Perfil WWW
Re: Banear ip error PHP
« Respuesta #4 en: 12 Septiembre 2011, 01:59 am »

No uses HTTP_X_FORWARDED_FOR, es una "variable" que se puede cambiar desde el header y no sirve de nada.
La unica que necesitas realmente es REMOTE_ADDR


Saludos
En línea

usuario oculto


Desconectado Desconectado

Mensajes: 450



Ver Perfil WWW
Re: Banear ip error PHP
« Respuesta #5 en: 12 Septiembre 2011, 02:16 am »

el primer code que puse funciona (culpa de hosting) , pero ahora un problema, solo funciona con la primera ip de la lista, sabeis como modificarlo y ponerlo bien please?

ya lo he arreglado con otro source
« Última modificación: 12 Septiembre 2011, 13:28 pm por usuario oculto » En línea

Que le jodan a  la salud mental!
Fecha de registro:    16 Noviembre 2008, 17:38
años atrás users baneados :)
[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: Banear ip error PHP
« Respuesta #6 en: 13 Septiembre 2011, 16:15 pm »

En vez de archivos, mejor usa Bases de datos, es ams rapido y seguro.

Saludos
En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Banear del foro SMF
Dudas Generales
scorpio21 3 4,147 Último mensaje 27 Junio 2011, 15:59 pm
por тαптяα
No puedo banear ip
Seguridad
mariotreco 1 1,896 Último mensaje 9 Diciembre 2011, 17:36 pm
por adastra
banear isp
Seguridad
Tonker 3 2,240 Último mensaje 21 Julio 2012, 05:52 am
por Tonker
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines