Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, estou fazendo um sistema e tenho uma tela de login onde quero fazer um tipo de validação que, na terceira tentativa de acesso com usuario ou senha inválidos, ele fará um update no BD e colocará o usuário como inativo, enviando automaticamente um e-mail com lembrete de senha para o email que o cliente foi cadastrado no sistema.
Fazer o update e o envio automático é de boa, só não sei como fazer essa validação de tentativas de acesso.
O código que fiz para validação do login é esse:
if($_REQUEST['acao'] == "entrar"){
$sql = "SELECT * FROM login_geral WHERE login_geral_usuario = '".$_REQUEST['txtUsuario']."' AND login_geral_senha ='".$_REQUEST['txtSenha']."'";
$rs = mysql_query($sql);
if(mysql_num_rows($rs) >= 1){
$user = mysql_fetch_array($rs);
//conferindo o login e senha para segurança
if($user['login_geral_usuario'] == $_POST['txtUsuario']){
//se entrou, entao o login é igual
if($user['login_geral_senha'] == $_POST['txtSenha']){
//se entrou, então a senha também é igual
$logado = "1";
$id_usuario = $user['login_geral_id'];
//criando a sessão
session_start();
$_SESSION["id_usuario"] = $id_usuario;
$_SESSION["logado"] = $logado;
//depois que criarmos a sessão,
//vamos redirecionar para a página privada
header("Location: principal.php");
}else{
echo "<script LANGUAGE='JavaScript' TYPE='text/javascript'>alert('Senha Incorreta!')</SCRIPT>";
}
}else{
echo "<script LANGUAGE='JavaScript' TYPE='text/javascript'>alert('Usuario Incorreto!')</SCRIPT>!";
} echo "<script LANGUAGE='JavaScript' TYPE='text/javascript'>alert ('Usuario ou senha invalidos. Tente novamente!')</SCRIPT>";
}
}Se for viável para você, insira uma coluna na tabela de usuário com o nome 'erros_login' tipo TINYINT(2) e outra com nome 'usuario_ativo' TINYINT(1).
Cada vez que o usuário não conseguir logar no sistema você dá um update no campo 'erros_login' referente aquele usuário, esse campo armazena quantos vezes o login recusado.
Via PHP você resgata esse valor a cada chamada de login e verifica se é igual ao limite que você estabeleceu, sendo igual ao limite (nesse caso 3) você envia uma mensagem ao usuário, envia uma query para deixar o usuário inativo e envia um email com um link para ativar a conta e cadastrar uma nova senha..
A grosso modo é isso..
>
Se for viável para você, insira uma coluna na tabela de usuário com o nome 'erros_login' tipo TINYINT(2) e outra com nome 'usuario_ativo' TINYINT(1).
Cada vez que o usuário não conseguir logar no sistema você dá um update no campo 'erros_login' referente aquele usuário, esse campo armazena quantos vezes o login recusado.
Via PHP você resgata esse valor a cada chamada de login e verifica se é igual ao limite que você estabeleceu, sendo igual ao limite (nesse caso 3) você envia uma mensagem ao usuário, envia uma query para deixar o usuário inativo e envia um email com um link para ativar a conta e cadastrar uma nova senha..
A grosso modo é isso..
eu acho que ja entendi e pra conta a tentativa no caso seria viavel criar coluna qnt e a cada tentativa de falha
acresecentar um numero e verifica no php se for <=3 e bloquear o usuario?
Não... Não é preciso criar um count.
Você, a cada erro de login vai dar um update no campo erros_login, esse campo deverá ser criado na tabela dos usuários, como INT(1) e setar o seu valor default como 0.
Feito isso, a cada erro na hora de logar cairia no ELSE.
if()
{
....
}else{
$update = mysql_query("UPDATE tabela SET erros_login = erros_login + 1 WHERE id_usuario =".$id_usuario)or die(mysql_error());
print 'ususario incorreto e tal...';
}
Isso você deverá inserir dentro de cada ELSE de erro de login.
E agora ? como comparar ?
No início do script você faria uma rotina, ou função.
<?php
$erros = mysql_query("SELECT id_usuario,erros_login FROM tabela WHERE
id_usuaro=".$id_ususario)or die(mysql_error());
$quant = mysql_fetch_array($erros);
if($quant['erros_login'] ==3)
{
print 'Função para disparar o email depois da outro update na tabela com o id do usuario no campo ativo, e coloque o id de inativo, dê um update também no campo erros-login para 0 novamente.';
}
?>
Veja que eu expliquei ali no print o que você tem que fazer.
tbm gostaria de saber como faz
mais acho que tenho meia ideia da coisa na hora de logar no form salva ip do cidadão e acho que grava em session
e verifica e na tentativas verifica se o ip ja esta armazenado na session acho que é isso nao sei bem
mais saindo do foco só para seu codigo fica menor
vai assim encurta e funciona mesmo jeito
se esse script roda na mesma pagina que o login
se ele for rodar pra ter que volta pra outra pagina poder ser assim