Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diego RLS

RESOLVIDO - Autenticação comparando array

Recommended Posts

Olá, estou com uma certa dificuldade e precisava de uma ajuda (coisa simples, eu acho)...

 

É o seguinte tenho uma página HTML e preciso que quando a pessoa for acessar a página apareça um prompt pedindo o ID e depois um outro prompt pedindo a matricula, e então o JavaScript iria comparar se o ID e a Matricula estão presentes no array, caso sim aparece um alert dando "Boas Vindas" e então o HTML é carregado, caso contrário aparece um alert informando que os dados estão incorretos e volta para o prompt pedindo o ID.

Quando eu acesso o HTML os prompts pedindo ID e matricula aparecem normal, mas independentemente das informações que eu insiro (seja dados corretos ou incorretos) não aparece nenhum dos alerts e a página HTML não carrega, pelo o que entendi a parte de verificação não está funcionando.

 

Só para deixar avisado eu sei que este tipo de autenticação por JavaScript não é segura, mas a implementação é apenas didática nada de importante... segue o código.

 

//INFORMAÇÕES SOBRE OS USUÁRIOS CADASTRADOS
// Exemplo : [usuario 0] > ID: abc, Matricula: 123

usuario = new Array();
usuario[0] = ["abc","123"];
usuario[1] = ["xyz","456"];  

do{
  //Informações enviadas pelo Usuario
  id_fornecido = prompt("Informe seu ID:");
  matricula_fornecida = prompt("Informe sua matrícula:");
  
  //A princípio, verificar se o ID existe
  for (id = 0; (id = usuario.length-1); id++) {
    if (usuario === id_fornecido[id][0]) {
      login_valido = true;
      break;
    }
  }
}
  		 
// Até que se provar o contrário, o login e inválido
while((login_valido = false));

if(login_valido === true){
	//Validar mátricula do Usuario
	if(usuario === matricula_fornecida[id][1])
		alert("Bem vindo ",id);
	}else{
      	alert("Dados Invalidos");
  		 }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
21 horas atrás, wanderval disse:

E ai Diego,

 

Fiz algumas correções no seu código, basicamente foi alguns operadores errados, e referencia de posição de array, da uma olhada se era isso que esperava:

 

https://jsbin.com/qekisujudu/edit?js,output

 

Bom dia Wanderval, obrigado pela ajuda cara,

 

Realmente essa é a ideia, só teve um pequeno problema, quando digita o ID correto (abc) e a matricula errada, ele aceita normalmente mesmo tendo no fim do ELSE a variavel login_valido = false, parece que este ELSe está sendo ignorado.

 

Tentei colocar um IF dentro do outro mas não funcionou.

 

//INFORMAÇÕES SOBRE OS USUÁRIOS CADASTRADOS
//Exemplo : [usuario 0] > ID: abc, Matricula: 123

var currentId;
var login_valido = false;
var matricula_fornecida = '';
var usuario = [];

usuario[0] = ["abc","123"];
usuario[1] = ["xyz","456"];

do{
  //Informações enviadas pelo Usuario
  id_fornecido = prompt("Informe seu ID:");
  matricula_fornecida = prompt("Informe sua matrícula:");
  
  //Verificação
  for (var id = 0; id < usuario.length; id++) {
    if (usuario[id][0] === id_fornecido) {
    currentId = id;	
    	if(usuario[currentId][1] === matricula_fornecida){
  		alert("Bem vindo, " + usuario[currentId][0]);
		login_valido = true;
    }else{
    	alert("Dados Invalidos");   
		login_valido = false;
    break;
    }
  }
} 
// Até que se provar o contrário, o login e inválido
while(login_valido === false);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom aparentemente o JSBin não executa o loop como esperado, talvez seja uma especie de segurança mas testei o mesmo código no codepen e o jsfiddle e executou aparentemente como esperado.

 

Seu código estava com erro de fechamento de chaves, melhor começar a usar um editor de código como vscode + Inspect Element, isso vai te ajudar em implementações futuras.

 

link: https://jsfiddle.net/a3qg7wce/

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
19 horas atrás, wanderval disse:

Bom aparentemente o JSBin não executa o loop como esperado, talvez seja uma especie de segurança mas testei o mesmo código no codepen e o jsfiddle e executou aparentemente como esperado.

 

Seu código estava com erro de fechamento de chaves, melhor começar a usar um editor de código como vscode + Inspect Element, isso vai te ajudar em implementações futuras.

 

link: https://jsfiddle.net/a3qg7wce/

 

 

Agora deu certo, funcionando exatamente com queria, fiz mais uma mudança para alertar dados invalidos sempre que qualquer um dos dados estiverem errados, antes só aparecia em uma condição (ID correto e Matricula errada).

 

Sobre o editor de código eu uso sim, é que na pressa fui inventar de alterar usando editor de texto do Linux.

 

Mais uma vez muito obrigado pela ajuda Wanderval.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por clovis.sardinha
      Bom dia.
      Meu problema é o seguinte:
      Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.
      O resultado do array é o seguinte:

      Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 
      Veja abaixo

       
      Meu código para a tabela é a seguinte:
      <tr> <td align="left"><?php echo $usuario['nome'] ?></td> <td align="left"><?php echo $usuario['nome_orgao'] ?></td> <td align="left"><?php echo $usuario['nome_funcao'] ?></td> <?php foreach($destinos as $key=>$destino):?> <?php $key=0;?> <td align="left"> <?php foreach($destino as $chave=> &$cidade): ?> <?php echo $cidade['cid_nome']."-";?> <?php endforeach;?> </td> <?php $key+=$key; ?> <?php endforeach;?> <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td> <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td> </tr> <?php endforeach ?> Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

    • Por Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.