Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Simulador de tela de login, não consigo simular o bloqueio do acesso a conta

Olá, alguém pode me ajudar a entender o que está dando errado no código? Já tentei várias mudanças e não funcionou, então comecei a comparar com o do professor e deixar o mais próximo possível ao código dele, mas o meu continua não mostrando o "Acesso bloqueado". Já tentei usar "alert" e "document.write", mudar a ordem do código, até tentei usar o "console.log" para encontrar o erro, mas o resultado é o mesmo, não aparece o aviso (nem o resultado do "console.log"). O que está errado no código? O depurador não mostra nada.

Capitura de tela com o código do exercício Simulando uma tela de login

6 respostas

Bom dia, tudo bem? segue o codigo abaixo:

<meta charset="UTF-8">
<script>

    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";


    var contador = 1;

        while(contador <=3){
        var loginInformado = prompt("Informe seu login");
        var senhaInformada = prompt("Informe sua senha");
        if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {

            alert("Bem-vindo ao sistema " + loginInformado);
            contador = 5;
        } else {

            alert("Login inválido. Tente novamente");
            contador = contador + 1;
            if(contador == 4){
        alert("Acesso bloqueado!");
    }

    }
}

</script>

Olá, Andriça, no meu PC apareceu tudo direitinho.

O problema pode estar na versão do navegador.

Sugiro que você adicione as seguintes linhas ao seu código:

No início de tudo (primeira linha):

<!DOCTYPE html>
<html lang="pt-br">

E no final de tudo (última linha):

</html>

Isso é necessário para ajudar o navegador a identificar o arquivo como uma página web.

Veja o código completo:

<!DOCTYPE html>
<html lang="pt-br">
<meta charset="UTF-8">

<script>

    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";

    var numeroTentativas = 0;
    var numeroMaximoTentativas = 3;

    while(numeroTentativas < numeroMaximoTentativas) {

        var loginInformado = prompt("Informe seu login");
        var senhaInformada = prompt("Informe sua senha");

        if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {
            numeroTentativas = numeroMaximoTentativas;
            alert("Bem-vindo ao sistema, " + loginInformado);

            //tentativaAtual = maximoTentativas; 

        } else {

            if (numeroTentativas == 3) {
                alert("Número permitido de tentativas ultrapassado!");
            } else {
                alert("Login inválido. Tente novamente");
            }
        }

       // vai para a próxima tentativa
       numeroTentativas = numeroTentativas +1  
    }

</script>
</html>

Se possível, atualize a versão do seu navegador e mantenha-o sempre na versão mais atual.

Caso o problema persista, tente copiar o código do exercício e ver se funciona no seu navegador. Qualquer, coisa, compartilhe conosco aqui no fórum.

Espero ter ajudado. Bons estudos!

Oi, gente.

Primeiramente, obrigada por responderem.

Então, o código do professor está funcionando normalmente, meu navegador está atualizado (acabei de confirmar), e meu código funciona (a parte do acesso bem sucedido e se errar o login). Me desculpem se eu não consegui explicar direito, o problema no meu código está sendo a parte do "Acesso bloqueado":

        } else {
            if (numeroTentativas == numeroMaxTentativas) {
                document.write ("Acesso bloqueado");

Eu queria escrever na página que o acesso à conta foi bloquado após as 3 tentativas falhas, mas meu código continua mostrando o "Login inválido. Tente novamente", em vez do "Acesso bloqueado".

Como disse anteriormente, já fiz várias mudanças no código, inclusive, acabei de implementar a mudança que Leila sugeriu:

<!DOCTYPE html>
<html lang="pt-br">

</html>

Mas continuo sem conseguir o retorno de "Acesso bloqueado". Eu queria entender o porquê.

solução!

Olá, Andriça, a chave da questão está na ordem dos if e else.

Lembrando que else significa se não (numeroTentativas < numeroMaximoTentativas) ou seja: se numeroTentativas >= numeroMaximoTentativas, faça tal coisa. A primeira verificação que o programa faz depois que a condição deixa de ser verdadeira é quando numeroTentativas == numeroMaximoTentativas (que está subentendida no primeiro else). Então, o if que aparece em seguida do primeiro else está redundante, entende? Aí ele é ignorado e o programa passa para a leitura da próxima condição.

Veja que agora o resultado é o que você espera:

<!DOCTYPE html>
<html lang="pt-br">
<meta charset="UTF-8">

<script>

    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";

    var numeroTentativas = 0;
    var numeroMaximoTentativas = 3;

    while(numeroTentativas < numeroMaximoTentativas) {

        var loginInformado = prompt("Informe seu login");
        var senhaInformada = prompt("Informe sua senha");

        if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {

            alert("Bem-vindo ao sistema, " + loginInformado);
            break; // para de executar a repetição se login e senha estão corretos
        }

        numeroTentativas = numeroTentativas +1;

        if (numeroTentativas == numeroMaximoTentativas) {
                alert("Acesso bloqueado!"); //antes do else

        } else {
                alert("Login inválido. Tente novamente");
        }
    }


</script>
</html>

Espero ter contribuído para o esclarecimento da sua dúvida. Bons estudos!

Funcionou perfeitamente! Vou analisar direitinho o código para aprender e não cometer mais esse erro. Muito obrigada, Leila! <3

Atualize o navegador.