12-20-2021, 09:23 PM
1
DescripciónBloquea 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
Código PHP: ( Seleccionar Todo )
CREATE TABLE IF NOT EXISTS `u_loginc` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(20) NOT NULL,
`ip` varchar(32) NOT NULL,
`veces` int(4) NOT NULL DEFAULT '1',
`time` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
En c.user.php --> inc --> class --> c.user.php
Buscar:
Código PHP: ( Seleccionar Todo )
/*
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:
Código PHP: ( Seleccionar Todo )
/*
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:
Código PHP: ( Seleccionar Todo )
if($data['user_password'] != $pp_password){
return '0: Tu contraseña es incorrecta.';
} else {
if($data['user_activo'] == 1){
// Actualizamos la session
$this->session->update($data['user_id'], $remember, TRUE);
// Cargamos la información del usuario
$this->loadUser(true);
Reemplazar por:
Código PHP: ( Seleccionar Todo )
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ña es incorrecta.';
} else {
if($data['user_activo'] == 1){
// Actualizamos la session
$this->session->update($data['user_id'], $remember, TRUE);
// 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...


Facebook
Twitter
Reddit
Digg
del.icio.us
Tumblr
Pinterest
Blogger
Fark
LinkedIn
Mix
Google