Ir para conteúdo

POWERED BY:

Arquivado

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

osbornehell

[Resolvido] validando login

Recommended Posts

Olá pessoal estou com problemas nesse codigo, quando o usuario tenta acessar esta dando como login ou senha invaido, pore esta tudo correto login e senha.

 

index.html

...
	  include"includes/pg_fns.php";
	  include"includes/pg_config.php";
	  require"includes/verificaLogin.php";
	  //Verifica se a secao já existe
	  session_start();
	  if(session_is_registered('login') AND session_is_registered('senha'))
	  {
	  session_destroy();
	  }
	  ....
<form name="formlogin" method="post" action="<?=/*$_SERVER["PHP_SELF"]*/$PHP_SELF?>?acao=logar">

 

o index inclui o vrificaLogin.php

include"includes/pg_config.php";
	
	if($_GET['acao']=="logar")
	{
	// verifica se a variavel existir
	if(isset($_POST['login']) and isset($_POST['senha'])) {
		// se existie as login e senha coloca os valores em uma varivel
		$login= $_POST['login'];
		$senha = $_POST['senha'];
	} else {
		$m=("Voce não esta logado");
		//header("Location: index.php?erro=ok&m=$m");
		echo "$m";
		exit;
	}
	
	if(empty($_POST['login']))
	{
		$m=("Preencha o seu login");
		//header("Location: index.php?erro=ok&m=$m");
		echo "$m";
		exit;
	}
	if(empty($_POST['senha']))
	{
		$m=("Preencha sua senha");
		//header("Location: index.php?erro=ok&m=$m");
		echo "$m";
		exit;
	}
	$sql = "SELECT * FROM dados_usuarios WHERE Login='$login' AND '$senha'";
	$query=mysql_query($sql);
	   if(mysql_num_rows($query)==1)
	{
		$m=("Login inexistente!");
		//header("Location: index.php?erro=ok&m=$m");
		echo "$m";
		exit;
	}
	else
	{
		$dados=mysql_fetch_array($query);
		$loginR=$dados['Login'];//Pega o login registrado no db
		$senhaR=$dados['Senha'];//Pega a senha registrada no db
		$senhaR=($senhaR);//Descr.
	if($_POST['senha']!=$senhaR OR $_POST['login']!=$loginR)
	{
		$m=("Login ou senha inválidos");
		//header("Location: index.php?erro=ok&m=$m");
		echo "$m";
		exit;
	}
	else
		if($_POST['senha']==$senhaR AND $_POST['login']==$loginR)
	{
		$senha=($senha);
		session_start();
		session_register('login');
		session_register('senha');
		header("Location: index2.php");
		exit;
			}
		}
	}
	?>

alguem pode me endicar alguma coisa

a função para cadastar esta cadastrando normalmente

Compartilhar este post


Link para o post
Compartilhar em outros sites

o session_start, já deveria extir no arquivo: includes/verificaLogin.php e:

require"includes/verificaLogin.php";
	  //Verifica se a secao já existe
	  session_start();
	  if(session_is_registered('login') AND session_is_registered('senha'))
	  {
	  session_destroy();
	  }
não entendi oque você quer com esse IF ai.

Confira o nome dos campos da tua tabela, se lembre do case-sensitive.

e essa query tá mal escrita hein?!

$sql = "SELECT * FROM `dados_usuarios` WHERE `Login`='{$login}' AND `Senha` = '{$senha}'";
Por questões de segurança, era melhor que você fizesse essas comparações em querys distintas.. mas enfim.. vê se resolve ai com oq te disse.

 

à rigor, um > 0 aqui basta:

if(mysql_num_rows($query) > 0)
pode acontecer apesar de ser um erro, ter 2 logins e senhas iguais.. mas você deve tratar isso antes, e não na hora de fazer o login do cara. Sei lá..

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é de lógica meu amigo. Apenas a logica do sistema que esta errada.

 

Observe esta parte.

 

$sql = "SELECT * FROM dados_usuarios WHERE Login='$login' AND '$senha'";
	$query=mysql_query($sql);
	   if(mysql_num_rows($query)==1)
	{
		$m=("Login inexistente!");
		//header("Location: index.php?erro=ok&m=$m");
		echo "$m";
		exit;
	}
	else
	{
.............
}

Leia esse trecho como se voce tivesse lendo uma sentença.

"Se a query ($query) obter um numero de resultados IGUAL a 1, referente da busca pelo login ($login) e senha ($senha), executar o primeiro block da condição.

Caso contrario, executar o segundo bloco da condição."

 

Percebeu amigo? A unica possibilidade de o login e senha estarem errados é justamente quando eles se casam com os que estão no banco de dados. Justamente na hora que deveria ser validade como corretos.

 

Assim todas as outras possibilidades (< 1 e > 1) retornam como se o login e a senha combinam com os do banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim quando o usuario vai se cadastra verifica se existe um login ou não se existe solicita um novo se não cadastra o login indicado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Okay, agora verifica tudo oque eu disse, e o erro de lógica que o André D. apontou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim quando o usuario vai se cadastra verifica se existe um login ou não se existe solicita um novo se não cadastra o login indicado

Mas e ai???

Essa sua resposta não ajudou muito a agente.

 

Ajude a ser ajudado.

 

Eu to achando que esta faltando algo tipo um função logar, tipo estou estudando esse codigo e tentando transcrevelo para depois usar na minha pagina, so que estou achando que estafaltando um ducnção logar, pos esse verificaLogin ela verifica se esta logado ou não correto? se não estiver vai sempre da os erros.

se vcs tiverem um sistema de login que me ajude a esturar, porque eu ja tinha feito um so que bugou tipo o usuario entrava na area do admin ai não pode ele iria ter acesso aos conteudos que é da administração

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que o André quiz dizer foi o seguinte..

 

Seu sistema acusa login inexistente, exatamente quando ele é encontrado, ou seja, você fez o contrário na validação..

 

tá assim...

$sql = "SELECT * FROM dados_usuarios WHERE Login='$login' AND '$senha'";
	$query=mysql_query($sql);
	   if(mysql_num_rows($query)==1) // aqui verifica se encontrou o login e a senha digitadas
	{
		// aqui diz que, se encontrar o login e senha, diz que não existe...
		$m=("Login inexistente!");
		//header("Location: index.php?erro=ok&m=$m");
		echo "$m";
		exit;
	}
	else
	{
.............
}

e outra, sua sql ta errada...

 

o certo deveria ser assim não?

$sql = "SELECT * FROM dados_usuarios WHERE Login='$login' AND senha='$senha'";
	$query=mysql_query($sql);
	   if(mysql_num_rows($query)==1) // aqui verifica se encontrou o login e a senha digitadas
	{
	   // manda ele para a área restrita...
	}
	else
	{
echo "dados inválidos...";
}

o campo "Login" está escrito com "L" maiúsculo mesmo no bd??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo certo dessa forma

session_start();
	   include ".../configuracao/conexao.php";
	   $login = htmlspecialchars($_POST["login"]);
	   $senha = $_POST["senha"];
	   if(empty($_POST['login']))
	   {
	   	$m=("Preencha o seu login");
	   	echo "<font size="1" color="#000000" face="Verdana, Arial, Helvetica, sans-serif"><b>$m</b></font><b></b>";
	   	include ("erro.php");
	   	exit;
	   }
	   if(empty($_POST['senha']))
	   {
	   	$m=("Preencha sua senha");
	   	echo "<font size="1" color="#000000" face="Verdana, Arial, Helvetica, sans-serif"><b>$m</b></font><b></b>";
	   	include ("erro.php");
	   	exit;
	   }
	   $sql   = "SELECT * FROM dados_usuarios WHERE login='$login' AND senha='$senha'";
	   $resultado = mysql_query($sql);
	   $campos  = mysql_num_rows($resultado);
		if($campos > 0){
	   // Usuário existe ? verfifando
		  if($senha != mysql_result($resultado,0,"Senha")) <font color="#ff0000">{
   
		   $m=("Senha incorreta!"); <font color="#0000ff">// esse parte quando senha esta errado esta retornando pagina em branco</font>
   
			echo "<font size="1" color="#000000" face="Verdana, Arial, Helvetica, sans-serif"><b>$m</b></font><b></b>";
			require ("erro.php");
	   	 exit;
   
	   	}</font>		  else {
	   			// se o login não for do administrado vamos criar a sessão dele
	   			session_start();
	   			$_SESSION['login_usuario'] = $login;
	   			$_SESSION['senha_usuario'] = $senha;
	   			
	   			// redireciona o link para uma outra pagina
	   			header("Location: redimecionar.php");
	   			//echo "<script> location.href='redimecionar.php'</script>";
	   		}
	   	}
	   echo "<title>AutoCar Auto Escola</title>";
	   ?>

porem aqui

 

/	 if($senha != mysql_result($resultado,0,"Senha")) [color="#ff0000"]{
 
		$m=("Senha incorreta!"); [color="#0000ff"]// esse parte quando senha esta errado esta retornando pagina em branco[/color]
 
		 echo  "<font size="1" color="#000000" face="Verdana, Arial, Helvetica,  sans-serif"><b>$m</b></font><b></b>";
		 require ("erro.php");
		 exit;
 
		}

eu queria que ficase assim

// Usuário existe ? verfifando
	 if($login || $senha != mysql_result($resultado,0,0,"Login","Senha")) {
	 $m=("Senha incorreta!");
	 echo "$m";
	 require ("erro.php");
	 exit;
	 }
como posso fazer isso para se login e senha forem != a mysql_result apareça senha $m,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu to achando que esta faltando algo tipo um função logar

Na verdade, o 'logar' do teu script, é um parâmetro à ser passado no action do formulário. Veja:

if($_GET['acao']=="logar")
então, você deve ter um form assim:

<form action="seiLaONome.php?acao=logar" method="post">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma comparação de cada vez cara...

if($login != mysql_result($resultado, 0, "Login") || $senha != mysql_result($resultado, 0, "Senha")) {

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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