¡Bienvenido! ¿Aún no estás registrado?, deberás registrarte antes de poder usar el Chat, Comentar y Descargar en el Foro. Usa un email válido para la activación.
Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

COMPLEMENTOS Bloquear cuenta de usuario para 1 IP tras logins consecutivos fallidos (Act 1.3)
#1

1
Mejor respuesta del mensaje Bloquear cuenta de usuario para 1 IP tras logins consecutivos fallidos (Act 1.3)Descripción
Bloquea 15 minutos la cuenta de un usuario para la IP que haga 5 logins consecutivos fallidos en 1 día.


Captura
[img]Registrate o inicia tu sesión para ver este contenido[/img]



Ejecutar esta consulta
CREATE TABLE IF NOT EXISTS `u_loginc` (
  `
idint(11NOT NULL AUTO_INCREMENT,
  `
uservarchar(20NOT NULL,
  `
ipvarchar(32NOT NULL,
  `
vecesint(4NOT NULL DEFAULT '1',
  `
timeint(10NOT NULL,
  
PRIMARY KEY (`id`)
ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=
 
 
En c.user.php  --> inc --> class --> c.user.php

Buscar:
/*
        HACEMOS LOGIN
        loginUser($username, $password, $remember = false, $redirectTo = NULL);
    */
    
function loginUser($username$password$remember FALSE$redirectTo NULL){
        global 
$tsCore;

        
/* ARMAR VARIABLES */
        
$username strtolower($username);    // ARMAR VARIABLES 
 
 
Reemplazar por:
/*
        HACEMOS LOGIN
        loginUser($username, $password, $remember = false, $redirectTo = NULL);
    */
    
function loginUser($username$password$remember FALSE$redirectTo NULL){
        global 
$tsCore;
        
$username strtolower($username);    // ARMAR VARIABLES
        
$ip $tsCore->getIP();
        
$sql_inc db_exec(array(__FILE____LINE__), 'query''SELECT time, veces FROM u_loginc WHERE ip = \''.$ip.'\' AND user = \''.$username.'\'');
        
$datalogs db_exec('fetch_array'$sql_inc);    
        if(
$datalogs['time'] <= time()-86400)
        
db_exec(array(__FILE____LINE__), 'query''DELETE FROM u_loginc WHERE ip = \''.$ip.'\' AND user = \''.$username.'\'');
        if(
$datalogs['veces'] >= 5){    
        if(
$datalogs['time'] <= time()-900)
        
db_exec(array(__FILE____LINE__), 'query''DELETE FROM u_loginc WHERE ip = \''.$ip.'\' AND user = \''.$username.'\'');
        else
        return 
'0: Esta cuenta se encuentra bloqueada temporalmente.';
        } 
 
 
Buscar:
if($data['user_password'] != $pp_password){
            return 
'0: Tu contrase&ntilde;a es incorrecta.';
        } else {
            if(
$data['user_activo'] == 1){
                
// Actualizamos la session
                
$this->session->update($data['user_id'], $rememberTRUE);
                
// Cargamos la información del usuario
                
$this->loadUser(true); 
 
 
Reemplazar por:
if($data['user_password'] != $pp_password){
            if(!
db_exec('num_rows'$sql_inc))
            
db_exec(array(__FILE____LINE__), 'query''INSERT INTO `u_loginc` (user, ip, time) VALUES (\''.$username.'\', \''.$ip.'\', \''.time().'\')');
            else
            
db_exec(array(__FILE____LINE__), 'query''UPDATE u_loginc SET time = \''.time().'\', veces = veces + 1 WHERE ip = \''.$ip.'\' AND user = \''.$username.'\'');
            
            return 
'0: Tu contrase&ntilde;a es incorrecta.';
        } else {
            if(
$data['user_activo'] == 1){
                
// Actualizamos la session
                
$this->session->update($data['user_id'], $rememberTRUE);
                
// Cargamos la información del usuario
                
$this->loadUser(true);
                
//BORRAMOS LOGINS FALLIDOS
                
db_exec(array(__FILE____LINE__), 'query''DELETE FROM u_loginc WHERE ip = \''.$ip.'\' AND user = \''.$username.'\''); 





Creditos: Debes agradecer para ver el contenido...
Responder


Compartir en:

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)