Foros del Web » Programando para Internet » PHP »

Como validar para que el usuario ingrese solo 3 intentos en el login

Estas en el tema de Como validar para que el usuario ingrese solo 3 intentos en el login en el foro de PHP en Foros del Web. Hola a todos estoy haciendo el login para el ingreso a usuarios en el formulario tengo 1.Usuario 2.Password ya valida el usuario y la contraseña ...
  #1 (permalink)  
Antiguo 02/06/2006, 12:26
Avatar de traviesaFeliz  
Fecha de Ingreso: mayo-2006
Ubicación: Ambato
Mensajes: 28
Antigüedad: 17 años, 11 meses
Puntos: 0
Como validar para que el usuario ingrese solo 3 intentos en el login

Hola a todos estoy haciendo el login para el ingreso a usuarios

en el formulario tengo

1.Usuario
2.Password

ya valida el usuario y la contraseña lo que necesito es hacer que el usuario solo tenga 3 intentos para el ingreso de su contraseña.

espero me puedan ayudar gracias
  #2 (permalink)  
Antiguo 02/06/2006, 12:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Pues puedes hacerlo fe una forma "facil", agregando un <input type="hidden" name="tries" value="0"> e ir incrementando el valor de tries cada vez.

O hacerlo mas complejo, en la base de datos guardas, cuantas veces ha tratado y la fecha, asi si trata mas de X veces, lo guardas en la base que ya no puede tratar hasta Y fecha, y en el principio de tu login, checas la fecha y ves si puede o no intentarlo.
  #3 (permalink)  
Antiguo 02/06/2006, 13:02
Avatar de pato_volador  
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 18 años, 6 meses
Puntos: 0
tambien puedes ir guardandolo en una variable de sesion... y para que no te estorbe despues al momento de acceder a la pagina protegida le das un unset a la variable de la session...
tengo un codigo medio extraño para eso pues lo acabo de implementar en un sitio, te lo pongo en dos horas por que me llaman a junta,..... voy que vuelvo.. espero te sirva un poco mas tarde...

saludos!!!
  #4 (permalink)  
Antiguo 02/06/2006, 15:50
Avatar de pato_volador  
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 18 años, 6 meses
Puntos: 0
if ($totalRows_rsvalida == 0) //si la consulta a la base de datos con el nombre de usuario y contraseña me devuelve un CERO es por que no se encontro ese registro y por ende o esta mal el usuario o la contraseña
{
if (isset($_SESSION['contador'])) //si ya existe la variable de sesion contador.....
{
$_SESSION['contador']=$_SESSION['contador']+1; //le sumo el intento fallido
$int = $_SESSION['contador'];
if ($int <= 4) //comparo que sea menor o igual a 4 intentos
{
header ("Location: index.php?error=0&int=$int"); // lo mando a la pagina de logeo diciendole q esta mal el nombre de usuario y contraseña...
exit;
}
if ($int > 4) //si ya paso de 4 intentos...
{
header ("Location: registro/registro.php?error=3"); //lo mando a la pagina de "Mejor registrese..."
exit;
}
}
else //si no existe la variable de sesion contador entonces la inicializo y le doy el valor primario de 1 y lo redireciono de nuevo a la pagina de login.
{
$_SESSION['contador'] = 1;
$int = $_SESSION['contador'];
header ("Location: index.php?error=0&int=$int");
exit;
}

}

Como te habras dado cuenta en todos los caso de los headers va una variable $error que pasa por la URL, esto es para mostrar los mensajes de error respectivos en cada pagina, por ejemplo en el index.php le muestra un mensaje de "nombre de usuario y contraseña incorrectos!" y en la pagina de registro.php, al detectar la variable $error de la URL le muestra le mensaje de "Mejor registrese..."

Espero te sirva de algo ....

saludos!!!
  #5 (permalink)  
Antiguo 03/06/2006, 16:57
Avatar de traviesaFeliz  
Fecha de Ingreso: mayo-2006
Ubicación: Ambato
Mensajes: 28
Antigüedad: 17 años, 11 meses
Puntos: 0
Muchas gracias pato_volador ys i tienes razon es un codigo muy complicado lo voy a implentar y luego te cuento como me fue ok muchas gracia.
  #6 (permalink)  
Antiguo 03/06/2006, 17:09
 
Fecha de Ingreso: junio-2006
Ubicación: Jáltipan Veracruz, México
Mensajes: 150
Antigüedad: 17 años, 10 meses
Puntos: 1
yo tengo un sistema de logeo que utiliza el sistema de windows, te lo pongo, los datos los obtengo de una base de datos.


<?
if(!isset($PHP_AUTH_USER))
{
header('WWW-Authenticate: Basic realm="Acceso Restringido"');
header('HTTP/1.0 401 Unauthorized');
echo 'Se necesita un nombre de Usuario y un Password Correcto Para poder Ingresar';
exit;
}
//el siguiente script es de conexion devuelve la conexion a la base datos
//con el usuario y pass correcto

include "conexion.php"; // script de conexion

// aqui la tabala admin solo tiene un registro que
// es el administrador del sistema
// si lo quieres para más registros solo incluyele un ciclo

$result=mysql_query("select * from admin",$conexion);
$row=mysql_fetch_row($result); // obtengo los datos

$usua=$row[0];
$clave=$row[1];

include"cerrar_conexion.php"; // script para cerrar la conexion



$validado=false;
if(($PHP_AUTH_USER==$usua)&&($PHP_AUTH_PW==$clave) ) $validado=true;

if(!$validado)
{
header('WWW-Authenticate: Basic realm="Acceso restringido"');
header('HTTP/1.0 401 Unauthorized');
echo 'Se necesita un nombre de Usuario y un Password Correcto Para poder Ingresar';
exit;
}
?>


por ser un sistema de windows, te permite, solo intentar 3 veces, esto no puede ser controlado
  #7 (permalink)  
Antiguo 03/06/2006, 17:16
Avatar de traviesaFeliz  
Fecha de Ingreso: mayo-2006
Ubicación: Ambato
Mensajes: 28
Antigüedad: 17 años, 11 meses
Puntos: 0
GatorV muchas gracias por ayudarme pero ya le estaba haciendo de esa manera y no consegui hacer lo que deseaba pero si puedes enviarme el codigo porfa seria de mucha ayuda pa ver en donde estoy errando por fa disculapa la molestia y gracias nuevamente.
  #8 (permalink)  
Antiguo 03/06/2006, 17:23
Avatar de traviesaFeliz  
Fecha de Ingreso: mayo-2006
Ubicación: Ambato
Mensajes: 28
Antigüedad: 17 años, 11 meses
Puntos: 0
Muchisimas gracias norpool1 voy a probarlo y espero que funcione como tu lo dices parece facil pero lo voy a implementar en el sistema de login que tengo de todos modos muchas gracias, luego te cuento como me fue ok bay bay
  #9 (permalink)  
Antiguo 03/06/2006, 17:40
 
Fecha de Ingreso: junio-2006
Ubicación: Jáltipan Veracruz, México
Mensajes: 150
Antigüedad: 17 años, 10 meses
Puntos: 1
te recomiendo que este sea un script aparte, llámalo "autentifica.php"

entonces a la página que requiere logeo le incluye la siguiente línea al inicio:

<? include"autentifica.php";?>

así cuando quieres abrir la página primero te autentifica, si es correcto ve todo lo demás, sino es correcto se queda en el script autentifica con un mensaje de error.

Se le pueden hacer adaptaciones para que te envie a otra página y cosas así, solo si lo requieres.
  #10 (permalink)  
Antiguo 03/06/2006, 17:55
Avatar de traviesaFeliz  
Fecha de Ingreso: mayo-2006
Ubicación: Ambato
Mensajes: 28
Antigüedad: 17 años, 11 meses
Puntos: 0
muchas gracias por la aclaracion norpool1 y espero me funcione y otra pregunta y si lon quiero hacer mas complicado como deberia hacerlo por ejemplo si deseo que el usuario que excedio en sus intentos de ingreso no pueda ingresar durante todo el dia
  #11 (permalink)  
Antiguo 03/06/2006, 18:05
Avatar de traviesaFeliz  
Fecha de Ingreso: mayo-2006
Ubicación: Ambato
Mensajes: 28
Antigüedad: 17 años, 11 meses
Puntos: 0
Gracias norpool1 poe la aclaracion y el lunes le cuento como fue y si tengo algun problema, y porfa si necesito mas ayuda por fa me ayuda si ok muchas gracias otra vez
  #12 (permalink)  
Antiguo 03/06/2006, 18:07
 
Fecha de Ingreso: junio-2006
Ubicación: Jáltipan Veracruz, México
Mensajes: 150
Antigüedad: 17 años, 10 meses
Puntos: 1
podrias agregarle a la tabla admin un campo fecha, en el cual si ya no pudo entrar hoy, le gregues la fecha y en la consulta a la tabla revises la fecha si concide con hoy no abre, sino abre y borras el campo.

si tienes messenger de hotmail puedes agregarma [email protected] para que estemos en contacto más rápido. y me digas que estás haciendo y enviarte los script para hacerlos funcionar.

Norberto
  #13 (permalink)  
Antiguo 03/06/2006, 18:14
 
Fecha de Ingreso: junio-2006
Ubicación: Jáltipan Veracruz, México
Mensajes: 150
Antigüedad: 17 años, 10 meses
Puntos: 1
me equivoque en el correo es [email protected] el de gmail es [email protected]
  #14 (permalink)  
Antiguo 03/06/2006, 18:28
okram
Invitado
 
Mensajes: n/a
Puntos:
Yo uso este codigo para hacer lo que deseas:

<FONT style="BACKGROUND-COLOR: #f5f5ff">
Código PHP:
<?php
//INICIO DE SESION
session_name('controlarintentos');
session_start();
//FUNCION PARA MOSTRAR EL FORMULARIO
function mostrar_form() {
// ESTE ES EL FORMULARIO
echo '<form name="login" action="" method="POST">';
echo 
'Usuario: <input type="text" name="usuario"><br />';
echo 
'Password: <input type="password" name="pswd"><br />';
echo 
'<br />';
echo 
'<input type="submit" value=" Enviar ">';
echo 
'</form>';
}
//NUMERO DE INTENTOS PERMITIDOS
$permitidos 3;
//TIEMPO POR EL QUE NO PODRA LOGUEARSE SI HA SOBREPASADO EL NUMERO PERMITIDO DE INTENTOS (en segundos)
$tiempo 20//20 segundos
// PRIMERO VERIFICAMOS SI PUEDE SEGUIR LOGUEANDOSE O DEBE ESPERAR ALGUN TIEMPO
if(isset($_SESSION['tiempo_fuera'])) {
// Comprobamos cuanto tiempo ha pasado:
$tiempo_ahora time() - $_SESSION['tiempo_fuera'];
if(
$tiempo_ahora $tiempo) {
$tiempo_restante $tiempo-$tiempo_ahora;
// ESTO SI NO PUEDE LOGUEARSE
die('Debes esperar '.$tiempo_restante.' segundos para poder intentar el login de nuevo.<br /><br /><a href="intentos.php">Recargar página</a>');
} else {
unset(
$_SESSION['tiempo_fuera']);
}
}
if(
$_SERVER['REQUEST_METHOD'] == "POST") {
// ESTO ES TODO LO QUE SE HARA AL ENVIAR EL FORMULARIO
// LUEGO VEMOS CUANTOS INTENTOS VA
if(!isset($_SESSION['intentos'])) {
$intento 0
$_SESSION['intentos'] = $intentos;
} else {
$intento $_SESSION['intentos'];
}
// LUEGO COMPARAMOS CON EL NUMERO DE INTENTOS PERMITIDOS
if($intento >= $permitidos) {
// LO QUE PASARA SI HA SOBREPASADO EL NUMERO DE INTENTOS VALIDOS
unset($_SESSION['intentos']);
$_SESSION['tiempo_fuera'] = time();
die(
'Ha sobrepasado el numero permitido de intentos de login. No podra loguearse por '.$tiempo.' segundos.<br /><br /><a href="intentos.php">Recargar página</a>');
} else {
// CONTABILIZAMOS EL INTENTO
$intento++;
/*
AQUI VERIFICAS SI LOS DATOS SON CORRECTOS Y TODO ESO....
SI NO LO SON CREAS UNA VARIABLE $acceso = 0;
SI LO SON, CREAS LA VARIABLE $acceso = 1;
*/
// ALGO ASI PARA ESTE CASO... ESTO TU DEBES CAMBIAR POR TUS CONSULTAS A LA BD Y TODO ESO
if($_POST['usuario'] == 'admin' && $_POST['pswd'] == 'abc') {
$acceso 1;
} else {
$acceso 0;
}
// FIN VERIFICACION DE DATOS
if($acceso == 1) {
// BORRAMOS LAS VARIABLES DE SESION
unset($_SESSION['tiempo_fuera'],$_SESSION['intentos']);
// AQUI REDIRIGES O LO QUE SEA Q HAYA Q HACER SI EL LOGIN ES CORECTO
die('Login correcto');
} else {
// GUARDAMOS EL INTENTO Y REGRESAMOS AL LOGIN
$_SESSION['intentos'] = $intento;
echo 
'datos incorrectos, vas '.$intento.' intentos <br />';
mostrar_form();
}
}
} else {
//MOSTRAMOS EL FORMULARIO
mostrar_form();
}
?>
Puedes verlo trabajando in vivo en esta direccion:

http://www.okram.com.ar/intentos.php

Y otra cosa, solo decirles, y no para incomodarlos o molestar, que el pedir ayuda atraves de un MP o por correo electronico es considerado como una falta de respeto o discriminacion hacia los demas usuarios...

Espero te sirva e codigo, ya comentas como t fue

Salu2

EDITADO: Me olvidaba, los datos supuestos de acceso correcto en el ejemplo que te di son USUARIO: admin y PASS: abc .... Despoues de tres intentos fallidos el usuario no podra loguearse por 20 segundos... si quieres aumentar el tiempo a un dia por ejemplo: 60*60*24
  #15 (permalink)  
Antiguo 03/06/2006, 18:34
 
Fecha de Ingreso: junio-2006
Ubicación: Jáltipan Veracruz, México
Mensajes: 150
Antigüedad: 17 años, 10 meses
Puntos: 1
el dar mi correo o ayudar por mp no es para discriminar a los demás usuarios, solo es para tener un contacto más rápido y personalizado para resolver más rápido sus dudas si es que prefiere utilizar mi código, además le puedo enviar los scripts que tengo y la forma en que operan sin hacer más grande el tema.

si un usario tiene el mismo problema lo resuelve enviando un e-mail y no publicando nuevamente.

No es molestia, sino aclaración.

I.S.C. Norberto Pablo
  #16 (permalink)  
Antiguo 03/06/2006, 18:44
okram
Invitado
 
Mensajes: n/a
Puntos:
Totalmente de acuerdo

pero...
Cita:
Iniciado por norpool1
si un usario tiene el mismo problema lo resuelve enviando un e-mail y no publicando nuevamente.
los usuarios que lleguen a este mensaje y usen tu codigo sera gracias al buscador, pero dado que muchos aqui no lo usan, es inevitable que de aqui a un tiempo este tema sea replanteado, en cuyo caso lo ideal sera linkear nuevamente a este mensaje, y si hay mas dudas seguir posteando aqui con el fin de contribuir y ayudar a los demas usuarios, no limitando asi la solucion al que plantea el problema.

ademas, los usuarios con el mismo problema que lleguen a este mensaje o a cualquier otro que haya sido resuelto por PM o por email, pues al no ver la solucion completa posteada lo que harann s iniciar un nuevo tema, por lo que es mejor terminar siempre con los temas empezados en vez de dejarlos en el aire

No es mi intencion para nada armar ningun problema, tan solo es un comentario acerca de algo que siempre se ha dado en los foros, y que deja cientos de mensajes sin una solucion aparente AQUI, que resulto resuelta por mensajes privados o por emails

Salu2
  #17 (permalink)  
Antiguo 05/06/2006, 10:16
Avatar de traviesaFeliz  
Fecha de Ingreso: mayo-2006
Ubicación: Ambato
Mensajes: 28
Antigüedad: 17 años, 11 meses
Puntos: 0
Bueno debo dar las gracias a todos por la ayuda brindada ya que en realidad todas las ideas y codigos expuestos funcionaron a pedir de boca o sea excelente gracias por resolver mis dudas y ayudarme mucho norpool1, pato_volador, okram en realidad fueron de mucha ayuda nuevamente muchas gracias.

Saludos a todos :)
  #18 (permalink)  
Antiguo 05/06/2006, 10:23
Avatar de traviesaFeliz  
Fecha de Ingreso: mayo-2006
Ubicación: Ambato
Mensajes: 28
Antigüedad: 17 años, 11 meses
Puntos: 0
bueno debo dar las gracias a todos por la yuda brindada es muy bueno contar con personas como ustedes, nuevamente muchas gracias GatorV,pato_volador, norpool1, y okram el codigo y las ideas que ustedes me presentaron fue de mucha ayuda y en realidad me sirvio de mucho ya que de todos aproveche alguna idea gracias muevamente.

saludos ;)
  #19 (permalink)  
Antiguo 05/06/2006, 15:29
okram
Invitado
 
Mensajes: n/a
Puntos:
cuando quieras, esperamos que sigas participando activamente en la comunidad...

Salu2
  #20 (permalink)  
Antiguo 07/01/2015, 11:27
 
Fecha de Ingreso: mayo-2013
Ubicación: Peru p
Mensajes: 1
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Como validar para que el usuario ingrese solo 3 intentos en el login

Interesante tema me sirvió mucho, la pregunta seria que actualizaciones tendría que hacer para este año 2015, o ya el php quedo desfasado yo sigo trabajando con el
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:20.