Foros del Web » Programando para Internet » PHP »

Como limitar el numero de intentos de login a un sitio web

Estas en el tema de Como limitar el numero de intentos de login a un sitio web en el foro de PHP en Foros del Web. Hice una mini pantalla de login en la cual existen tres usuarios, cada uno obviamente dispone de su contraseña, entonces lo que intento hacer es ...
  #1 (permalink)  
Antiguo 02/07/2010, 11:35
 
Fecha de Ingreso: septiembre-2009
Mensajes: 63
Antigüedad: 15 años, 2 meses
Puntos: 0
Como limitar el numero de intentos de login a un sitio web

Hice una mini pantalla de login en la cual existen tres usuarios, cada uno obviamente dispone de su contraseña, entonces lo que intento hacer es que despues de el usuario intente loguearse por 3 veces seguidas aparezca un mensaje de error o algo asi por el estilo.

El codigo de mi login:

Código PHP:
<?php
class login
{
//se declaran los usuarios 
var $usu "oso";
var 
$pass "1234";
var 
$usu1 "admin";
var 
$pass1 "1234";
var 
$usu2 "esclavo";
var 
$pass2 "1234";
//se crean constructores
    
function doLogin ($u$p)
    {
        if(
            ( 
$u == $this->usu) && ($p == $this->pass)
            )
           {
                   
session_start();
                
$_SESSION["login"] = "OK";
                
$_SESSION["usuario"] = $u;
                
//header("location:index.php");
                
return true;
           }    
        if(
            ( 
$u == $this->usu1) && ($p == $this->pass1)
             )
           {
                   
session_start();
                
$_SESSION["login"] = "OK";
                
$_SESSION["usuario"] = $u;
                
//header("location:index.php");
                
return true;
           }    
        if(
            ( 
$u == $this->usu2) && ($p == $this->pass2)
             )
           {
                   
session_start();
                
$_SESSION["login"] = "OK";
                
$_SESSION["usuario"] = $u;
                
//header("location:index.php");
                
return true;

           }    
    }

    function 
buscador ()
    {
        if( 
$_SESSION["usuario"] == "admin" )           
           {
                   echo 
"http://www.google.com";
           } 
        
        if( 
$_SESSION["usuario"] == "oso" )           
           {
                   echo 
"http://www.yahoo.com";
           }    
        if( 
$_SESSION["usuario"] == "esclavo" )           
           {
                   echo 
"http://www.altavista.com";
           }    
    }
function 
logOut ()
    {
        
session_start();
        
$_SESSION["login"] = "";
        
    }
    
    function 
Saludo ()
    {
        echo 
" Hola Buen Dia: " $_SESSION["usuario"];
        
    }



    function 
isLogin ()
    {
        
session_start();
        
        if ( 
$_SESSION["login"] == "" )
        {
            return 
false;
            
//header("location:login.php");
        
}
        else
        {
            return 
true;
        }
    
    }

}
?>
Como podria hacer para limitar el numero de intentos a solo 3 intentos.

Saludos y gracias por sus respuestas.
  #2 (permalink)  
Antiguo 02/07/2010, 13:25
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Como limitar el numero de intentos de login a un sitio web

Grabar en alguna sesión las veces de intentos y luego cuando haya llegado al máximo colocar alguna condición para mostrar el mensaje.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 02/07/2010, 16:07
 
Fecha de Ingreso: septiembre-2009
Mensajes: 63
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Como limitar el numero de intentos de login a un sitio web

Cita:
Iniciado por abimaelrc Ver Mensaje
Grabar en alguna sesión las veces de intentos y luego cuando haya llegado al máximo colocar alguna condición para mostrar el mensaje.
Y como podria hacer eso??

Con mucha batalla yo y otro compañero de la escuela logramos hacer esa pequeña pantalla de login, no sabemos nada de PHP, esa pantalla de login la hicimos como practica para poder aprender PHP.


Saludos
  #4 (permalink)  
Antiguo 17/08/2010, 08:21
 
Fecha de Ingreso: julio-2008
Mensajes: 155
Antigüedad: 16 años, 3 meses
Puntos: 1
El codigo no lo he provado pero creo que la idea iria asi.


<?php

//En algun momento de la aplicación se tendira que declarar la session en la página principal
session_start();
$_SESSION['contadorLogin'] == 0;



class login
{
//se declaran los usuarios
var $usu = "oso";
var $pass = "1234";
var $usu1 = "admin";
var $pass1 = "1234";
var $usu2 = "esclavo";
var $pass2 = "1234";
//se crean constructores
function doLogin ($u, $p)
{
if(( $u == $this->usu) && ($p == $this->pass)&& $_SESSION['contadorLogin'] < 3)
{
session_start();
$_SESSION["login"] = "OK";
$_SESSION["usuario"] = $u;
//Se crea una variable de session donde se guarda un 0, ya que si ha iniciado esque la información es correcta
$_SESSION['contadorLogin'] == 0;
//header("location:index.php");
return true;
} else{

$_SESSION['contadorLogin'] = $_SESSION['contadorLogin'] + 1;
echo "has intentado loguearte ". $_SESSION['contadorLogin'];

}
if(( $u == $this->usu1) && ($p == $this->pass1)&& $_SESSION['contadorLogin'] < 3)
{
session_start();
$_SESSION["login"] = "OK";
$_SESSION["usuario"] = $u;
//Se crea una variable de session donde se guarda un 0, ya que si ha iniciado esque la información es correcta

$_SESSION['contadorLogin'] == 0;
//header("location:index.php");
return true;
} else{
$_SESSION['contadorLogin'] = $_SESSION['contadorLogin'] + 1;
echo "has intentado loguearte ". $_SESSION['contadorLogin'];


}
if(( $u == $this->usu2) && ($p == $this->pass2))
{
session_start();
$_SESSION["login"] = "OK";
$_SESSION["usuario"] = $u;
//Se crea una variable de session donde se guarda un 0, ya que si ha iniciado esque la información es correcta

$_SESSION['contadorLogin'] == 0;
//header("location:index.php");
return true;

} else{
$_SESSION['contadorLogin'] = $_SESSION['contadorLogin'] + 1;
echo "has intentado loguearte ". $_SESSION['contadorLogin'];

}
}

function buscador ()
{
if( $_SESSION["usuario"] == "admin" )
{
echo "http://www.google.com";
}

if( $_SESSION["usuario"] == "oso" )
{
echo "http://www.yahoo.com";
}
if( $_SESSION["usuario"] == "esclavo" )
{
echo "http://www.altavista.com";
}
}
function logOut ()
{
session_start();
$_SESSION["login"] = "";

}

function Saludo ()
{
echo " Hola Buen Dia: " . $_SESSION["usuario"];

}



function isLogin ()
{
session_start();

if ( $_SESSION["login"] == "" )
{
return false;
//header("location:login.php");
}
else
{
return true;
}

}

}
?>

El codigo no lo he provado pero creo que la idea iria asi.


Código PHP:
<?php 

//En algun momento de la aplicación se tendira [PHP]
que declarar la session en la página principal
session_start();
$_SESSION['contadorLogin'] == 0;



class login
{
//se declaran los usuarios
var $usu = "oso";
var $pass = "1234";
var $usu1 = "admin";
var $pass1 = "1234";
var $usu2 = "esclavo";
var $pass2 = "1234";
//se crean constructores
function doLogin ($u, $p)
{
if(( $u == $this->usu) && ($p == $this->pass)&& $_SESSION['contadorLogin'] < 3)
{
session_start();
$_SESSION["login"] = "OK";
$_SESSION["usuario"] = $u;
//Se crea una variable de session donde se guarda un 0, ya que si ha iniciado esque la información es correcta
$_SESSION['contadorLogin'] == 0;
//header("location:index.php");
return true;
} else{

$_SESSION['contadorLogin'] = $_SESSION['contadorLogin'] + 1;
echo "has intentado loguearte ". $_SESSION['contadorLogin'];

}
if(( $u == $this->usu1) && ($p == $this->pass1)&& $_SESSION['contadorLogin'] < 3)
{
session_start();
$_SESSION["login"] = "OK";
$_SESSION["usuario"] = $u;
//Se crea una variable de session donde se guarda un 0, ya que si ha iniciado esque la información es correcta

$_SESSION['contadorLogin'] == 0;
//header("location:index.php");
return true;
} else{
$_SESSION['contadorLogin'] = $_SESSION['contadorLogin'] + 1;
echo "has intentado loguearte ". $_SESSION['contadorLogin'];


}
if(( $u == $this->usu2) && ($p == $this->pass2))
{
session_start();
$_SESSION["login"] = "OK";
$_SESSION["usuario"] = $u;
//Se crea una variable de session donde se guarda un 0, ya que si ha iniciado esque la información es correcta

$_SESSION['contadorLogin'] == 0;
//header("location:index.php");
return true;

} else{
$_SESSION['contadorLogin'] = $_SESSION['contadorLogin'] + 1;
echo "has intentado loguearte ". $_SESSION['contadorLogin'];

}
}

function buscador ()
{
if( $_SESSION["usuario"] == "admin" )
{
echo "http://www.google.com";
}

if( $_SESSION["usuario"] == "oso" )
{
echo "http://www.yahoo.com";
}
if( $_SESSION["usuario"] == "esclavo" )
{
echo "http://www.altavista.com";
}
}
function logOut ()
{
session_start();
$_SESSION["login"] = "";

}

function Saludo ()
{
echo " Hola Buen Dia: " . $_SESSION["usuario"];

}



function isLogin ()
{
session_start();

if ( $_SESSION["login"] == "" )
{
return false;
//header("location:login.php");
}
else
{
return true;
}

}

}
?>[/PHP]

Última edición por GatorV; 17/08/2010 a las 08:42
  #5 (permalink)  
Antiguo 17/08/2010, 08:41
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Como limitar el numero de intentos de login a un sitio web

bueno yo lo intente asi una vez pero tengo un compañero q es el rey de los peros y me dijo q pasa si el usuario cierra el navegador??? y vuelve a intentar??? no se destruye la session??? y entonces decidi hacerlo con un campo en la tabla de usuario en la db un campo intentos q se incrementara si falla en la autentificacion pero noc si eslo q necesites o q opinan los demas experiencia en esto saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

Etiquetas: limitar, login, numero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 08:31.