Ir para conteúdo

POWERED BY:

Arquivado

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

LFelipe

[Resolvido] Autenticação de Usuários

Recommended Posts

Seguinte pessoal,

 

estou recorrendo a vcs novamente para tentar solucionar uma dificuldade que estou tendo.

 

Adaptei um sitema de login qua ja exixtia para por em pratica por aqui, fazendo com que seja obrigatoria a autenticação do usuario entes de ter acesso a pagina de relatorios gerencias da empresa, onde apos a autenticação sera verificado qual o nivel que ele pertence, se usuario ou admin.

Tenho ja a pagia de login pronta que apos digitado o user e senha chama a pagina de verificação. Se user e senha estiverem corretos, ela faz uma nova query buscando 4 informações do usuario que sera guardado em session e redireciona para a pagina de formulario, que ao ser carregada, teria que aparecer o nome do usuario, informando qual tipo de permissão que ele tem e o link para o relatorio especifico.

 

O que não esta funcionando é esta ultima parte, pois apos autenticado ele abre a pagina de relatorio (index1.php) só que não me mostra o nome dele, o tipo de usuario e o link para acesso ao relatorio.

 

Gostaria da ajuda de vcs para tentar achar o que esta de errado.

 

Os codigos são:

 

autenticação

<?php
// Conexão com o banco de dados
require "comum.php";

// Inicia sessões
session_start();

// Recupera o login
$login = isset($_POST["login"]) ? addslashes(trim($_POST["login"])) : FALSE;
// Recupera a senha, a criptografando em MD5
$senha = isset($_POST["senha"]) ? md5(trim($_POST["senha"])) : FALSE;

// Usuário não forneceu a senha ou o login
if(!$login || !$senha)
{
	echo "Você deve digitar sua senha e login!";
	exit;
}

/**
* Executa a consulta no banco de dados.
* Caso o número de linhas retornadas seja 1 o login é válido,
* caso 0, inválido.
*/
$SQL = "SELECT id, nome, login, senha, postar
		FROM aut_usuarios
		WHERE login = '" . $login . "'";
$result_id = @mysql_query($SQL) or die("Erro no banco de dados!");
$total = @mysql_num_rows($result_id);

// Caso o usuário tenha digitado um login válido o número de linhas será 1..
if($total)
{
	// Obtém os dados do usuário, para poder verificar a senha e passar os demais dados para a sessão
	$dados = @mysql_fetch_array($result_id);

	// Agora verifica a senha
	if(!strcmp($senha, $dados["senha"]))
	{
		// TUDO OK! Agora, passa os dados para a sessão e redireciona o usuário
		$_SESSION["id_usuario"]   = $dados["id"];
		$_SESSION["nome_usuario"] = stripslashes($dados["nome"]);
		$_SESSION["permissao"]	= $dados["postar"];
		header("Location: index.php");
		exit;
	}
	// Senha inválida
	else
	{
		echo "Senha inválida!";
		exit;
	}
}
// Login inválido
else
{
	echo "O login fornecido por você é inexistente!";
	exit;
}
?>

 

 

e a pagina dos relatorios:

 

<?php
// Verificador de sessão
require "verifica.php";

// Conexão com o banco de dados
require "conexao.php";

session_start();

// Imprime mensagem de boas vindas
echo "<font face=\"Verdana\" size=2>Bem-Vindo " . $_SESSION["id_usuario"] . "!<BR>\n";

echo "Usuário Autenticado";
/**
* Verifica se usuário tem permissão para postar novas notícias.
* Caso positivo, imprime link para postagem de notícias
*/
if($_SESSION["tipo"] == 1)
{
	echo " | <a href=\"vendasTBAop.php\">Relatorio Operador</a>\n"; 
	
}
else($_SESSION["tipo"] == "2")
{
	echo " | <a href=\"vendasTBAsup.php\">Ralatorio Supervisor</a>\n"; 

}

// Imprime link de logout
echo " | <a href=\"sair.php\">Sair do Sistema</a>";

echo "<br><br>\n";


?>

o que estou fazendo de errado????

 

Valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte pessoal,

 

estou recorrendo a vcs novamente para tentar solucionar uma dificuldade que estou tendo.

 

Adaptei um sitema de login qua ja exixtia para por em pratica por aqui, fazendo com que seja obrigatoria a autenticação do usuario entes de ter acesso a pagina de relatorios gerencias da empresa, onde apos a autenticação sera verificado qual o nivel que ele pertence, se usuario ou admin.

Tenho ja a pagia de login pronta que apos digitado o user e senha chama a pagina de verificação. Se user e senha estiverem corretos, ela faz uma nova query buscando 4 informações do usuario que sera guardado em session e redireciona para a pagina de formulario, que ao ser carregada, teria que aparecer o nome do usuario, informando qual tipo de permissão que ele tem e o link para o relatorio especifico.

 

O que não esta funcionando é esta ultima parte, pois apos autenticado ele abre a pagina de relatorio (index1.php) só que não me mostra o nome dele, o tipo de usuario e o link para acesso ao relatorio.

 

Gostaria da ajuda de vcs para tentar achar o que esta de errado.

 

Os codigos são:

 

autenticação

<?php
// Conexão com o banco de dados
require "comum.php";

// Inicia sessões
session_start();

// Recupera o login
$login = isset($_POST["login"]) ? addslashes(trim($_POST["login"])) : FALSE;
// Recupera a senha, a criptografando em MD5
$senha = isset($_POST["senha"]) ? md5(trim($_POST["senha"])) : FALSE;

// Usuário não forneceu a senha ou o login
if(!$login || !$senha)
{
	echo "Você deve digitar sua senha e login!";
	exit;
}

/**
* Executa a consulta no banco de dados.
* Caso o número de linhas retornadas seja 1 o login é válido,
* caso 0, inválido.
*/
$SQL = "SELECT id, nome, login, senha, postar
		FROM aut_usuarios
		WHERE login = '" . $login . "'";
$result_id = @mysql_query($SQL) or die("Erro no banco de dados!");
$total = @mysql_num_rows($result_id);

// Caso o usuário tenha digitado um login válido o número de linhas será 1..
if($total)
{
	// Obtém os dados do usuário, para poder verificar a senha e passar os demais dados para a sessão
	$dados = @mysql_fetch_array($result_id);

	// Agora verifica a senha
	if(!strcmp($senha, $dados["senha"]))
	{
		// TUDO OK! Agora, passa os dados para a sessão e redireciona o usuário
		$_SESSION["id_usuario"]   = $dados["id"];
		$_SESSION["nome_usuario"] = stripslashes($dados["nome"]);
		$_SESSION["permissao"]	= $dados["postar"];
		header("Location: index.php");
		exit;
	}
	// Senha inválida
	else
	{
		echo "Senha inválida!";
		exit;
	}
}
// Login inválido
else
{
	echo "O login fornecido por você é inexistente!";
	exit;
}
?>

 

 

e a pagina dos relatorios:

 

<?php
// Verificador de sessão
require "verifica.php";

// Conexão com o banco de dados
require "conexao.php";

session_start();

// Imprime mensagem de boas vindas
echo "<font face=\"Verdana\" size=2>Bem-Vindo " . $_SESSION["id_usuario"] . "!<BR>\n";

echo "Usuário Autenticado";
/**
* Verifica se usuário tem permissão para postar novas notícias.
* Caso positivo, imprime link para postagem de notícias
*/
if($_SESSION["tipo"] == 1)
{
	echo " | <a href=\"vendasTBAop.php\">Relatorio Operador</a>\n"; 
	
}
else($_SESSION["tipo"] == "2")
{
	echo " | <a href=\"vendasTBAsup.php\">Ralatorio Supervisor</a>\n"; 

}

// Imprime link de logout
echo " | <a href=\"sair.php\">Sair do Sistema</a>";

echo "<br><br>\n";


?>

o que estou fazendo de errado????

 

Valeu!!!

Posta os arquivos e forma como está fazendo, pois não entendi muito bem.

 

Mas penso eu que você está consultando por exemplo os dados no arquivo login.php

 

e ao redirecionar para o index.php por exemplo, você perde a consulta, tem que pegar os dados da sessão e consultar novamente.

 

Se não for assim explica melhor ai.

 

Eu fiz uma admin assim, eu dou select no login.php e se tudo correr bem eu redireciono, mas no index.php ou nos arquivos incluídos eu tenho quer fazer uma consulta com where dados da sessão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza pessoal... problema resolvido

 

não sei o porque, mais o problema estava aqui:

 

$dados = @mysql_fetch_array($result_id);

substitui essa linha por:

$_SESSION["id_usuario"]   = $result->fields[1];
$_SESSION["nome_usuario"] = stripslashes($result->fields[0]);
$_SESSION["tipo"]		  = $result->fields[3];

desta forma consegui pegar as informações que foi passada para session.

 

obrigado pela ajuda, e caso alguem tenha o mesmo problema, talvez essa possa ser a mesma solução.

 

Valow!!!

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.