• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Byter

Sistema de Login

5 mensagens neste tópico

Viva,

Estou com algumas dificuldades.

O que quero e que se o utilizador fizer login umas determinadas vezes mal, ficava intredito.

Fiz isso com sessions e arrays, mas tou com alguns probs, meto if $var > 5  ele fica intredito  e vai aparecendo as tentativas restantes mas passa de 3 para -1 e de -1 para -3 e so ai e que deixa de me deixar entrar.

Acho que tenho alguns > mal.

Vejam o code:

<?


if(isset($_SESSION['ips'])) {
	foreach($_SESSION['ips'] as $produto){
$total += $produto[0];
}
}
if($total == 4) {

echo "<h2>Voçe ficou intredito de entrar porque tentou entrar demasiadas vezes sem sucesso.</h1>"; 

} else {
	if(($rows["nome"]==$user) &&($rows2["senha"]==$senhacod))
	{	

	$tipoaloja = "tipoalojamento";

  setcookie ("$senha", $user); //grava o cookie com o login
  setcookie("$senha", $user, time()+3600);  /* expire in 1 hour */
   setcookie ("tipoalojamento", $tipoaloja); //grava o cookie com o login
  setcookie("tipoalojamento", $tipoaloja, time()+3600);  /* expire in 1 hour */
  
  session_start();
    
   $_SESSION['autenticar'] = $senha;
   
	echo "$current";
	  header ("Location: index.php?a=useradmin ");
	}

	else { 

	if(isset($_SESSION['ips'])) {
	foreach($_SESSION['ips'] as $produto){
$total += $produto[0];

}
$totali = 5 -+ $total;

} else {
$totali = "4";
}
$tentativa = "s";
	if($total < 1 ) {
	$tentativa = "s";
	} else {
	$tentativa = "";
	}
	echo "<h1>Username ou Password incorrecta! <br/> Tem mais $totali tentativa".$tentativa.".</h1>"; }

$numero = "1";
$array = array($numero, $ip);
   $_SESSION['ips'][]=$array;



}
}
?>

Se me puderem ajudar, agradeco.

Cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Não entendi muito bem esse código. Faltam declarações e especificação do que algumas variáveis significam.

Fica aqui um exemplo do que penso que queres fazer:

<?php

session_start();

$numero_maximo_tentativas = 5;

if ($_SESSION['login_tentativas'] == $numero_maximo_tentativas) {
echo "Número de tentativas excedidas. Estás banido";
die();
}

if ($username == $login_username && $password == $login_password) {
// O login introduzido é correcto.
$_SESSION['login_tentativas'] = 0;
header("Location: index.php?a=useradmin");
} else {
// O login introduzido é incorrecto
$_SESSION['login_tentativas'] += 1; // incrementação do número de tentativas
$numero_tentativas_restantes = $numero_maximo_tentativas - $_SESSION['login_tentativas'];
echo "Username ou password incorrectos. Tem mais $numero_tentativas_restantes tentativas";
}

?>

Abraços,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas

Zero-cool o teu código é o pedido mas se o utilizador sai ele entra numa nova sessão fica com o número devolta ao máximo.

O que se podia fazer é "guardar" o ip numa bd ou num outro documento do servidor,verificava e via um número de tentativas que era comunicado para o servidor.

Se quiseres fazer fala que estamos aqui para isso ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas

Zero-cool o teu código é o pedido mas se o utilizador sai ele entra numa nova sessão fica com o número devolta ao máximo.

O que se podia fazer é "guardar" o ip numa bd ou num outro documento do servidor,verificava e via um número de tentativas que era comunicado para o servidor.

Se quiseres fazer fala que estamos aqui para isso :P

A adaptação depois vai com cada um. :P A base é mais ou menos esta. Se quiseres verificação com o IP, sempre que o utilizador entra fazes um query para adicionar o IP. Sempre que se liga e falha, incrementas o valor e verificas se já ultrapassou o número máximo de tentativas. Deixo isso ao critério de cada utilizador para adaptar directamente ao seu sistema.

O problema dos cookies é que são fáceis de alterar. O IP pode ser rotativo ou causar problemas quando acedes à internet via um gateway (por exemplo uma escola) com várias pessoas a aceder ao site. Nem sempre é fácil controlares isso. Podes limitar o ban ao username, o que limita muito mais ataques "brute".

Abraços,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora