Ir ao conteúdo
  • Cadastre-se

Sistema de login


Posts recomendados

Download do sistema: Aqui

GA0bzq6.png

 

O banco de dados que eu quero que esse sistema acesse é este:

gvgrbdQ.png

 

Configurei o sistema mais o mesmo não faz o login diz isso veja:

Utilizador ou password invalidos. Tente novamente
 

para não ter erro ou dúvida vou posta os arquivos php aqui em baixo:

Login.php

<html><head>  <title>Login básico com PHP</title></head><body>  <form action="processaLogin.php" method="POST">    <p>Username: <input type="text" name="username" /></p>    <p>Password: <input type="password" name="sha_pass_hash" /></p>    <p><input type="submit" name="submit" value="Login" /></p>  </form></body></html>

ProcessaLogin.php
 

<?php// começar ou retomar uma sessãosession_start(); // se vier um pedido para loginif (!empty($_POST)) { 	// estabelecer ligação com a base de dados	mysql_connect('127.0.0.1', 'root', 'n3Sgd2323') or die(mysql_error());	mysql_select_db('auth'); 	// receber o pedido de login com segurança	$username = mysql_real_escape_string($_POST['username']);	$password = sha1($_POST['sha_pass_hash']); 	// verificar o utilizador em questão (pretendemos obter uma única linha de registos)	$login = mysql_query("SELECT id, username FROM account WHERE username = '$username' AND password = '$password'"); 	if ($login && mysql_num_rows($login) == 1) { 		// o utilizador está correctamente validado		// guardamos as suas informações numa sessão		$_SESSION['id'] = mysql_result($login, 0, 0);		$_SESSION['username'] = mysql_result($login, 0, 1); 		echo "<p>Sessão iniciada com sucesso como {$_SESSION['username']}</p>";	} else { 		// falhou o login		echo "<p>Utilizador ou password invalidos. <a href=\"login.php\">Tente novamente</a></p>";	}}?>

VerificarLogin.php
 

<?php// iniciar uma sessãosession_start(); if (empty($_SESSION['id'])) { 	// não existe sessão iniciada	// neste caso, levamos o utilizador para a página de login	header('Location: login.php');	exit();}?>

Protegido.php
 

<?php// pagina protegida, incluir script de verificação de loginrequire 'verificarLogin.php';?> <h1>Página protegida!</h1><p>Olá <u><?php echo $_SESSION['username']; ?></u>, esta é a página protegida</p>

logout.php
 

<?php// aceder às sessõessession_start(); // para terminar uma sessão, apenas é necessário destruí-lasession_destroy(); // redirecionar o utilizador para outra página, login.php por exemploheader('Location: login.php');?>
Link para o comentário
Compartilhar em outros sites

@leonardofan amigo acho que esta fazendo a requisição errada.  

 

$login = mysql_query("SELECT id, username FROM account WHERE username = '$username' AND password = '$password'");

requer a conexão com o banco, o mesmo não esta conectando e retornando que o usuário não existe porque não conseguiu fazer a consulta.

 

tente fazer essa correção..

$conexao =  mysqli_connect('127.0.0.1', 'root', 'n3Sgd2323') or die(mysqli_error());$login = mysqli_query($conexao,"SELECT * FROM account WHERE username='$username' AND '$password'") or die (mysqli_error());

Fora que você esta usando "mysql_" e ela esta obsoleta, use mysqli_.

Link para o comentário
Compartilhar em outros sites

@FabianoS

 

fiz exatamente mais fico branco:

http://prntscr.com/8o7l4b

<?php// começar ou retomar uma sessãosession_start(); // se vier um pedido para loginif (!empty($_POST)) { 	// estabelecer ligação com a base de dados	$conexao =  mysqli_connect('127.0.0.1', 'root', 'n3Sgd2323') or die(mysqli_error());	mysql_select_db('auth'); 	// receber o pedido de login com segurança	$username = mysql_real_escape_string($_POST['username']);	$password = sha1($_POST['sha_pass_hash']); 	// verificar o utilizador em questão (pretendemos obter uma única linha de registos)	$login = mysqli_query($conexao,"SELECT * FROM account WHERE username='$username' AND '$password'") or die (mysqli_error()) 	if ($login && mysql_num_rows($login) == 1) { 		// o utilizador está correctamente validado		// guardamos as suas informações numa sessão		$_SESSION['id'] = mysql_result($login, 0, 0);		$_SESSION['username'] = mysql_result($login, 0, 1); 		echo "<p>Sessão iniciada com sucesso como {$_SESSION['username']}</p>";	} else { 		// falhou o login		echo "<p>Utilizador ou password invalidos. <a href=\"login.php\">Tente novamente</a></p>";	}}?>
Link para o comentário
Compartilhar em outros sites

@leonardofan testei o código aqui e funcionou perfeito segue as modificações.

 

Screen: http://i.imgur.com/z01PIH5.png?1

 

Na parte da conexão. nao sei se esta usando o wampserver , geralmente se nao mudou senha ou usuario  seria

 

'Localhost','root','','nomedobancodedados'.

 

ProcessaLogin.php

<?php// começar ou retomar uma sessãosession_start(); // se vier um pedido para loginif (!empty($_POST)) { 	// estabelecer ligação com a base de dados$conexao = mysqli_connect('localhost','usuario','senha','banco') or die (mysql_error()); 	// receber o pedido de login com segurança	$username = mysqli_real_escape_string($conexao,$_POST['username']);	$password = sha1($_POST['sha_pass_hash']); 	// verificar o utilizador em questão (pretendemos obter uma única linha de registos)	$consulta = mysqli_query($conexao,"SELECT * FROM account WHERE username='$username' AND password='$password'"); 	$retorno = mysqli_num_rows($consulta);	if($retorno == 1) { 		// o utilizador está correctamente validado		// guardamos as suas informações numa sessão		$_SESSION['username'] = $username;		$_SESSION['password'] = $password; 		echo "<p>Sessão iniciada com sucesso como {$_SESSION['username']}</p>";	}else { 		// falhou o login		echo "<p>Utilizador ou password invalidos. <a href=\"login.php\">Tente novamente</a></p>";	}}?> 

NO verificarLogin.php so alterei para verificar o usuario e nao id.

<?php// iniciar uma sessãosession_start(); if (empty($_SESSION['username'])) { 	// não existe sessão iniciada	// neste caso, levamos o utilizador para a página de login	header('Location: login.php');	exit();}?>
Link para o comentário
Compartilhar em outros sites

processaLogin.php
 

<?php// começar ou retomar uma sessãosession_start(); // se vier um pedido para loginif (!empty($_POST)) { 	// estabelecer ligação com a base de dados$conexao = mysqli_connect('localhost','root','n3Sgd2323','auth') or die (mysql_error()); 	// receber o pedido de login com segurança	$username = mysqli_real_escape_string($conexao,$_POST['username']);	$password = sha1($_POST['sha_pass_hash']); 	// verificar o utilizador em questão (pretendemos obter uma única linha de registos)	$consulta = mysqli_query($conexao,"SELECT * FROM account WHERE username='$username' AND password='$password'"); 	$retorno = mysqli_num_rows($consulta);	if($retorno == 1) { 		// o utilizador está correctamente validado		// guardamos as suas informações numa sessão		$_SESSION['username'] = $username;		$_SESSION['password'] = $password; 		echo "<p>Sessão iniciada com sucesso como {$_SESSION['username']}</p>";	}else { 		// falhou o login		echo "<p>Utilizador ou password invalidos. <a href=\"login.php\">Tente novamente</a></p>";	}}?> 

verificarLogin.php

 

<?php// iniciar uma sessãosession_start(); if (empty($_SESSION['username'])) { 	// não existe sessão iniciada	// neste caso, levamos o utilizador para a página de login	header('Location: login.php');	exit();}?>

fiz exatamente isso faz o teste só

 

http://wowpandora.com.br/sistema/login.php

veja uma conta no banco de dados:

Nick: testando123
Senha: teste1234

Link para o comentário
Compartilhar em outros sites

@leonardofan

 

como eu modifiquei o código e crei uma tabela  você tem que fazer algumas alterações do tipo..

$consulta = mysqli_query($conexao,"SELECT * FROM account WHERE username='$username' AND password='$password'");

em password='$password' ,  você tem que colocar o nome da coluna do banco de dados que guarda a senha o numero hash, ou seja  "  sha_pass_hash='$password'  "  

 

que vai ficar assim

$consulta = mysqli_query($conexao,"SELECT * FROM account WHERE username='$username' AND she_pass_hash='$password'");
Link para o comentário
Compartilhar em outros sites

Ai que ta o meu problema eu alterei isso

processaLogin.php

	// receber o pedido de login com segurança	$username = mysqli_real_escape_string($conexao,$_POST['username']);	$password = sha1($_POST['sha_pass_hash']); 	// verificar o utilizador em questão (pretendemos obter uma única linha de registos)	$consulta = mysqli_query($conexao,"SELECT * FROM account WHERE username='$username' AND sha_pass_hash='$password'"); 	$retorno = mysqli_num_rows($consulta);	if($retorno == 1) { 		// o utilizador está correctamente validado		// guardamos as suas informações numa sessão		$_SESSION['username'] = $username;		$_SESSION['sha_pass_hash'] = $password; 		echo "<p>Sessão iniciada com sucesso como {$_SESSION['username']}</p>";	}else { 		// falhou o login		echo "<p>Utilizador ou password invalidos. <a href=\"login.php\">Tente novamente</a></p>";	}}?> 

login.php

 

<html><head>  <title>Login básico com PHP</title></head><body>  <form action="processaLogin.php" method="POST">    <p>Username: <input type="text" name="username" /></p>    <p>Password: <input type="password" name="sha_pass_hash" /></p>    <p><input type="submit" name="submit" value="Login" /></p>  </form></body></html>
Link para o comentário
Compartilhar em outros sites

http://prntscr.com/8o847f

 

códigos, a senha é tudo em md5 isso interfere talvez seja por isso que quebro a cara sempre com esse sistema ja e o decimo que tento.


Veja o sistema de registro que uso:

 

<html><center>		<?php		function Reg()		{			if (isset($_POST['reg'])==true) {                     require_once('config.php'); 				$user = $_POST['username'];				$pass = sha1(strtoupper($user.':'.$_POST['password'])); 				$email = $_POST['email'];				$con = mysql_connect($dbhost, $dbuser, $dbpassword);				if (!$con)  				{      				die('Could not connect!');   				} else {  					mysql_select_db("$logondb", $con); 					$sql="INSERT INTO account (username, sha_pass_hash, email) VALUES ('$user','$pass','$email')"; 					if (!mysql_query($sql,$con)) 					{      					die('There was an error creating your account.');   					} 					echo $succesmsg; 					mysql_close($con);  				} 			} else {?><form method="POST"><center>  <strong>LOGIN</strong>:<br/>  <strong>  <input name="username" type="text" placeholder="Nome da conta" value="">  <br/>PASSWORD</strong>:<br/> <input type="password" name="password" placeholder="********" /><br/><strong>EMAIL</strong>:<br/> <input type="EMAIL" name="email" placeholder="[email protected]"/><br/><input type="submit" value="REGISTRAR" name="reg"/></center></form><p><h1> set realmlist realm.wowpandora.com.br</h1><p><p> </p><h2>Copyright WoW Pandora <a href="">Oelsaid</a></h2><?php			}            }Reg();?></center></body></html>
Link para o comentário
Compartilhar em outros sites

@leonardofan 

 

o erro esta na consulta.

 

criei uma pagina so para inserir um cadastro no banco.

<?php$usuario = 'fabiano';$senhamd5 = sha1('fabiano1');$conexao = mysqli_connect('localhost','root','','cadastro');mysqli_query($conexao,"INSERT INTO account(username,password)VALUES('$usuario','$senhamd5')");?>

e usei o mesmo codigo do verificalogin.php

<?php// começar ou retomar uma sessãosession_start(); // se vier um pedido para loginif (!empty($_POST)) { 	// estabelecer ligação com a base de dados$conexao = mysqli_connect('localhost','root','','cadastro') or die (mysql_error()); 	// receber o pedido de login com segurança	$username = mysqli_real_escape_string($conexao,$_POST['username']);	$password = sha1($_POST['sha_pass_hash']); 	// verificar o utilizador em questão (pretendemos obter uma única linha de registos)	$consulta = mysqli_query($conexao,"SELECT * FROM account WHERE username='$username' AND password='$password'"); 	$retorno = mysqli_num_rows($consulta);	if($retorno == 1) { 		// o utilizador está correctamente validado		// guardamos as suas informações numa sessão		$_SESSION['username'] = $username;		$_SESSION['password'] = $password; 		echo "<p>Sessão iniciada com sucesso como {$_SESSION['username']}</p>";	}else { 		// falhou o login		echo "<p>Utilizador ou password invalidos. <a href=\"login.php\">Tente novamente</a></p>";	}}?>

e o resultado foi o mesmo. sem erro sem nada. 

 

wCVtRuT.png?1

 

o banco de dados confirma que introduzir os dados e a consulta bate e retorna verdadeiro e faz o login.

 

q7wmQNV.png?1

Link para o comentário
Compartilhar em outros sites

Mais faz o teste coloca ao invés de password, coloca: sha_pass_hash

e me manda os arquivos que faço a comparação talvez o meu "sha_pass_hash" esteja causando querendo ou não o seu e password, nossa não entendi não faz o login e acusa erro. no caso errado sla.


@update

O meu banco de dados é

Auth = Banco de dados principal
Account = após a auth

e as tabelas.

Link para o comentário
Compartilhar em outros sites

Mais faz o teste coloca ao invés de password, coloca: sha_pass_hash

e me manda os arquivos que faço a comparação talvez o meu "sha_pass_hash" esteja causando querendo ou não o seu e password, nossa não entendi não faz o login e acusa erro. no caso errado sla.

 

Pelo que vi,  sua tabela tem varias hash ,  tenha o campo id usuario e senha . e faz a consulta por esses o que pode estar causando erro e no usuario cadastrado que nao esta batendo com o o que você esta digitando.

 

 

o meu esta password porque é o nome da coluna que eu guardo as senhas como você pode ver. nao mudaria nada se eu mudasse para sha_pass_hash.

Link para o comentário
Compartilhar em outros sites

Será que por um acaso você não tem mais de um usuário com mesma senha e nome? O erro acontece quando o número de linhas retornadas não é igual a 1, então pode ser 0 ou mais que 1 nesse caso.

 

Na mensagem de erro, faça um var_dump da variável retornada na consulta e imprima também o número de linhas pra ter certeza.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...