Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal, seguinte tava querendo fazer um bloqueio de login por 30 minutos após a pesso erra tres vezes a senha mas nao sei como fazer...
penssei em fazer por session ou com uma tabela no banco de dados... na minha tabela de login eu tenho um campo q grava a data e o ip do ultimo acesso...
este bloqueio eu faço pelo login pou pelo ip?
tabela de usuarios
create table usuario(cd_pessoa int not null,login varchar(20) not null unique,senha varchar(20) not null,nivel char(1) not null,status char(1) not null,
constraint fk_usuario_pessoa foreign key (cd_pessoa) references pessoa(cd_pessoa),
constraint pk_usuario primary key (cd_pessoa)
) engine = innodb;
alguma dica?
para pegar o ip: $_SERVER["REMOTE_ADDR"];
Se eu fosse tu usaria cookies.
os cookies é muito facil bular...
O melhor seria um campo no banco de dados. Poderia ate fazer um bloqueio de IP + usuario.
Faz o bloqueio com sessões, por que se o usuário estiver em algum lugar que tenha ip fixo ai ela nunca mais vai poder usar, por exemplo numa intranet. xD
Com cookies nem adianta porque se o usuário estiver usando o firefox, com um simples atalho -> Ctrl + Shift + Delete, ja da pra exclui tudo os cookies (em qualquer outro navegador é façil excluir também).
O esquema seria o seguinte, a cada tentativa de entrar no sistema se o usuário não existir seria incrementado em uma variável de sessão, quando essa variável tiver o valor 3 ou mais apareceria uma mensagem falando que o computador foi bloquado.
hinom, tem uma parte extranet e outra intranet...tenho as duas....e os dois fazen acesso com login e senha
Smr, entao voce diz o seguinte:
quando a pessoa tentar logar e nao for sucedido eu crio uma varialver de seção com o ip dela e o numero de tentativa...
ai tipo a proximo q ele tenta loga eu procuro a sessao pelo ip e vejo se tentativa>3 e a data atual for hoje eu inativo o usuario??
seria isso???
Você pode criar uma tabela retries e uma de liberação (talvez realeaseAt?), nas condições de login, no else de falha (normalmente), você incrementa a tabela retries e, a chamada releaseAt, atualiza com a hora atual acrescida de 30 minutos (1800 segundos).
Agora, antes dessa etapa (porém já com as tabelas) você consulta a tabela retries. Se tiver diferente de zero (já errou alguma vez), consulta a tabela de liberação e verifica se o valor presente é maior que o tempo corrente, também em segundos.
Assim, não precisa depender de sessões ou cookies. É bem seguro.
P.S.: Não liga que a cronologia da resposta esteja invertida.O frio tá congelando os neurônios aqui...
Não faça com cookies pelo amor de deus rs.
Boa noite Imaggens, deixa eu ver se entendi: voce fala de eu fazer uam tabela:
retries(cd_retrie, cd_login, ip) e outra: realeaseAt(cd_realeaseAt, cd_hora, cd_retries, cd_login)
ai quando eu fizer o login eu consulto a tabela de retries, se ele o ip e o login contiver nela eu verifico a tabela de realease e vejo se a hora e maior q a hora atual, se for eu bloqueio o login, se nao libero o acesso...certo??
e quando o usuario errar o login, eueu gravo um registro na tabela de retries, e outro na tabela de realeaseat com a hora acrescida de 30 minutos...isso?
desculpe a ignorancia..
:unsure:
Eaew, eu tava procurando um sistema que um cara fez aqui no forum, ele tem isso que eu ti falei segue -> Formulario de login com ajax+php, isso ae :D.
intranet ou internet ?