guipramos Postado Setembro 7, 2016 Denunciar Share Postado Setembro 7, 2016 Pessoal, desculpa esta criando outro tópico, mas estou com uma duvida, estou fazendo um sistema de login, quando digito certo a senha e usuário ele entra, mas quando coloco qualquer senha ele loga tambem, o que esta errado. <?php session_start(); include_once 'config.php'; $usuario = $_POST['usuario']; $senha = $_POST['senha']; //VERIFICA SE FOI CLICADO NO BOTÃO 'ENTRAR'. if($_POST['entrar']): //VERIFICA SE OS CAMPOS ESTÃO VÁZIOS. if(empty($usuario)): header("Location: page_principal.php"); elseif(empty($senha)): header("Location: page_principalphp"); else: foreach($usuario as $usuario => $senha){ header("Location: page_principal.php"); } if($usuario == $usuario AND $senha == $senha): $_SESSION['usuarioSession'] = $login; $_SESSION['senhaSession'] = $senha; header("Location: painel.php"); else: echo "Os dados de acesso não combinam. Tente novamente."; echo '<hr/>'; echo '<a href="page_principal.php">Voltar</a>'; endif; endif; endif; ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rickayron Postado Setembro 7, 2016 Denunciar Share Postado Setembro 7, 2016 Olá, observe o seguinte trecho de seu código. if($usuario == $usuario AND $senha == $senha): Com essa verificação, qualquer coisa que você digitar o sistema vai autenticar como válido. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Setembro 7, 2016 Denunciar Share Postado Setembro 7, 2016 Além dessa verificação que sempre retornará true, aquele header() dentro do foreach não faz sentido algum. Sugiro seguir este meu artigo passo-a-passo sobre login: http://blog.ultimatephp.com.br/sistema-de-login-php/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 guipramos Postado Setembro 7, 2016 Autor Denunciar Share Postado Setembro 7, 2016 Esqueci de falar que esse sistema de login que estou fazendo é sem BD. Fui mexer no código e agora ele não logo no sistema, mesmo colocando usuário e senha certo ou errado, ele não entra, o que pode estar acontecendo. <?php session_start(); include_once 'config.php'; $usuario = $_POST['usuario']; $senha = $_POST['senha']; //VERIFICA SE FOI CLICADO NO BOTÃO 'ENTRAR'. if($_POST['entrar']): $usuarioLogin = $_POST['usuario']; $senhaLogin = $_POST['senha']; //VERIFICA SE OS CAMPOS ESTÃO VÁZIOS. if(empty($usuarioLogin)): echo 'Digite seu usuario. Clique <a href="page_principal.php"> aqui </a> para tentar novamente.'; elseif(empty($senhaLogin)): echo'Digite sua senha. Clique <a href="page_principal.php">aqui</a> para tentar novamente.'; else: foreach($usuario as $login => $senha) { if($usuarioLogin == $login && $senhaLogin == $senha): $_SESSION['usuarioSession'] = $usuariologin; $_SESSION['senhaSession'] = $senhaLogin; header("Location: painel.php"); endif; } header("Location: page_principal.php"); endif; endif; ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Setembro 7, 2016 Denunciar Share Postado Setembro 7, 2016 Esse foreach não faz sentido. Só faria se $_POST['usuario'] fosse um array Mesmo sem usar BD, leia o artigo que mandei. A lógica é a mesma. Só vai mudar o if. Em vez de comparar com o valor vindo do banco, você vai comparar com uma string pré-definida (de preferência uma constante), que tem o usuário/senha correto Note que $login e $usuarioLogin estão com o mesmo valor. Você tem que definir usuario/senha válidos em algum lugar. Você não fez isso em parte alguma do código Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 guipramos Postado Setembro 7, 2016 Autor Denunciar Share Postado Setembro 7, 2016 Aah beleza, vou tentar aqui cara, obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rickayron Postado Setembro 7, 2016 Denunciar Share Postado Setembro 7, 2016 Cara talvez você esteja complicando o código atoa, com muitos if e foreach. segue um exemplo simples que talvez ajude. <?php session_start(); //pega os dados do formulario. $senhaRecebida=trim($_POST['senha']); $ususarioRecebido=trim($_POST['senha']); //poderia pelo menos usar uma md5, cripty ou qualquer outra coisa. $senhaCorreta="12345"; $usuarioCorreto="user"; //validando if( $senhaRecebida==$senhaCorreta && $ususarioRecebido==$usuarioCorreto ){ //usuário e senha ok, login concedido. $_SESSION['login']['usuario']=$ususarioRecebido; //header("Location: dashboard.php"); }else{ //os dados não conferem, e por isso o login foi recusado. //header("Location: index.php"); die("Login errado!"); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
guipramos
Pessoal, desculpa esta criando outro tópico, mas estou com uma duvida, estou fazendo um sistema de login, quando digito certo a senha e usuário ele entra, mas quando coloco qualquer senha ele loga tambem, o que esta errado.
<?php
session_start();
include_once 'config.php';
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
//VERIFICA SE FOI CLICADO NO BOTÃO 'ENTRAR'.
if($_POST['entrar']):
//VERIFICA SE OS CAMPOS ESTÃO VÁZIOS.
if(empty($usuario)):
header("Location: page_principal.php");
elseif(empty($senha)):
header("Location: page_principalphp");
else:
foreach($usuario as $usuario => $senha){
header("Location: page_principal.php");
}
if($usuario == $usuario AND $senha == $senha):
$_SESSION['usuarioSession'] = $login;
$_SESSION['senhaSession'] = $senha;
header("Location: painel.php");
else:
echo "Os dados de acesso não combinam. Tente novamente.";
echo '<hr/>';
echo '<a href="page_principal.php">Voltar</a>';
endif;
endif;
endif;
?>
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.