Ir para conteúdo

POWERED BY:

Arquivado

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

Cleber Pereira

[Resolvido] Autenticação de Usuários

Recommended Posts

Olá amigos do Imasters, sou novo por aqui e preciso da ajuda de vocês!!

 

Fiz uma página de autenticação de usuários, na verdade praticamente copiei tudo de um livro que comprei (Desenvonvendo Websites com PHP)!

 

Vou postar os códigos para facilitar:

 

Criei a seguinte tabela no MYSQL:

CREATE TABLE usuarios
(
      username varchar(10) NOT NULL,
      senha varchar(10) NOT NULL,
      nome varchar(80) NOT NULL,
      email varchar(80) NOT NULL,
      cidade varchar(40) NOT NULL,
      estado char(2) NOT NULL,
      primary key(username)
);

 

A seguir estão os outros códigos:

 

conecta_mysql.inc

<?php

   $conexao = mysql_connect ("localhost", "root", "root");
   mysql_select_db ("meu_banco");

?>

login.html

<html>
<body>
<form method="POST" action="login.php">
 <p align="center">Nome de usuário: <input type="text" name="username" size="10"></p>
 <p align="center">Senha: <input type="password" name="senha" size="10"></p>
 <p align="center"><input type="submit" value="Enviar" name="enviar"></p>
</form>
</body>
</html>

 

login.php

<?php
// obtém os valores digitados
$username = $_POST["username"];
$senha = $_POST["senha"];

// acesso ao banco de dados
include "conecta_mysql.inc";
$resultado = mysql_query("SELECT * FROM usuarios where username='$username'");
$linhas = mysql_num_rows ($resultado);
if($linhas==0)  // testa se a consulta retornou algum registro
{
	echo "<html><body>";
	echo "<p align=\"center\">Usuário não encontrado!</p>";
	echo "<p align=\"center\"><a href=\"login.html\">Voltar</a></p>";
	echo "</body></html>";
}
else
{
   	if ($senha != mysql_result($resultado, 0, "senha")) // confere senha
	{
		echo "<html><body>";
		echo "<p align=\"center\">A senha está incorreta!</p>";
		echo "<p align=\"center\"><a href=\"login.html\">Voltar</a></p>";
		echo "</body></html>";
	}
	else   // usuário e senha corretos. Vamos criar os cookies
	{
		setcookie("nome_usuario", $username);
		setcookie("senha_usuario", $senha);
		// direciona para a página inicial dos usuários cadastrados
		header ("Location: pagina_inicial.php");
	}
}
mysql_close($conexao);
?>

valida_cookies.inc

<?php
if(IsSet($_COOKIE["nome_usuario"]))
	$nome_usuario = $_COOKIE["nome_usuario"];
if(IsSet($_COOKIE["senha_usuario"]))
	$senha_usuario = $_COOKIE["senha_usuario"];

if(!(empty($nome_usuario) OR empty($senha_usuario)))
{
	include "conecta_mysql.inc";
	$resultado = mysql_query("SELECT * FROM usuarios WHERE username='$nome_usuario'");
	if(mysql_num_rows($resultado)==1)
	{
		if($senha_usuario != mysql_result($resultado,0,"senha"))
		{
			setcookie("nome_usuario");
			setcookie("senha_usuario");
			echo "Você não efetuou o LOGIN!";
			exit;
		}
	}
	else
	{
		setcookie("nome_usuario");
		setcookie("senha_usuario");
		echo "Você não efetuou o LOGIN!";
		exit;
	}
}
else
{
	echo "Você não efetuou o LOGIN!";
	exit;
}

mysql_close($conexao);
?>

pagina_inicial.php

<?php
include "valida_cookies.inc";
?>
<html>
<body>
<?php echo "Olá $nome_usuario."?> Seja bem-vindo ao meu site!!!<br>
Coloque o conteúdo do seu site aqui neste espaço.<br>
<p><a href="pagina2.php">PÁGINA 2</a></p>
<p><a href="logout.php">LOGOUT</a></p>
</body>
</html>

logout.php

<?php	
	setcookie("nome_usuario");
	setcookie("senha_usuario");
	header ("Location: login.html");
?>

Bom, vou explicar qual é o problema!! Eu estou aprendendo PHP... não tenho quase nada de conhecimento ainda, mas no meu estágio preciso fazer uma página deste tipo!!!

 

Esses códigos estão funcionando perfeitamente, mas eu queria complementar!! Gostaria de fazer uma página para a alteração de senhas do usuário... no caso, depois de logado, o usuário ter a opção de alterar a senha!!

 

Também gostaria de separar os usuários por níveis... por exemplo... usuários asministradores acessarem determinadas páginas que outros usuários não podem!!

 

Gostaria que me ajudassem, pois não tenho condições de fazer sozinho!!

 

Se puderem me dar algumas dicas também... no livro ensina a fazer utilizando cookies... mas também não sei se essa é a melhor forma... se puderem postar alguns códigos para me auxiliar eu agradeço!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Cleber, seja bem vindo.

 

Pra alterar a senha do usuário, basta você executar um comando SQL pra alterar o valor do campo senha. Exemplo:

mysql_query("UPDATE usuarios SET senha = '{$_POST['novasenha']}' WHERE username LIKE '{$_COOKIE['nome_usuario']}' AND senha LIKE '{$_COOKIE['senha_usuario']}';");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelas dicas amigos... o gmps falou que falta segurança no código... é que estou começando ainda... o que seria melhor??

 

Fazer com sessions???

 

E marcio... muito obrigado pelo código... vou tentar usar e depois posto aqui se deu certo!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio... funcionou direitinho... só que eu estou tentando alterar algumas coisas e não ta dando muito certo...

 

Vou postar os códigos!!

 

altera.php (este é apenas o formulário para o usuário digitar a nova senha e confirmá-la)

<?php
include "valida_cookies.inc";
?>
<html>
<body>
<form method="POST" action="alterasenha.php">
  <p align="center">Nova Senha: <input type="password" name="novasenha" size="10"></p>
  <p align="center">Confirmação: <input type="password" name="confirmacao" size="10"></p>
  <p align="center"><input type="submit" value="Enviar" name="enviar"></p>
</form>
</body>
</html>

 

alterasenha.php (aqui está o problema)

<?php
include "conecta_mysql.inc";

$novasenha = $_POST['novasenha'];
$confirmacao = $_POST['confirmacao'];

if ($novasenha == $confirmacao){

mysql_query("UPDATE usuarios SET senha = '{$_POST['novasenha']}' WHERE username LIKE '{$_COOKIE['nome_usuario']}' 
AND senha LIKE '{$_COOKIE['senha_usuario']}';");

echo "SUA SENHA FOI ATUALIZADA";
} else{
echo "A SENHA NÃO PODE SER ALTERADA";


?>

Eu usei o teu código e coloquei dentro de uma condição IF!! A idéia seria a de comparar o que o usuário digitou em "nova senha" e em "confirme a sua senha" e só se fossem iguais a senha seria atualizada... depois eu ainda colocaria o "usuário" e a "senha atual". Mas primeiro estou tentando fazer funcionar assim!

 

Não tenho idéia do que pode estar dando errado... como já expliquei... estou apenas começando e não entendo muito ainda!!

 

O erro que dá é o seguinte:

Parse error: syntax error, unexpected $end in C:\AppServ\www\telecentros\alterasenha.php on line 17

 

Se puder me ajudar eu agradeço!!

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.