Ir ao conteúdo

Posts recomendados

Postado

Fala pessoal, é o seguinte, estou desenvolvendo um sistema onde tem niveis de acesso, o que eu quero é pegar a variavel perfil (defini como administrador, tecnico e usuario) que ja esta no banco e utiliza-la diretamente no php, onde cada tipo de nivel teria acesso a uma pagina diferente. Porém os campos login e senha ja vem direto de um formulario, mas o perfil eu criei direto no banco, já que não tem como definir um nivel de acesso para o usuario escolher, porque somente o adm pode definir isso, como transmitir o perfil e fazer esse redirecionamento.

 

Segue o que eu tentei fazer.

 

<?php
	
	$perfil = mysqli_query($conexao,"SELECT * FROM usuarios WHERE perfil='administrador'") or die (mysqli_error());

    if($perfil == "tecnico") {
    	session_start();
    	header("Location: menutec.php");
    }

    else if($perfil == "administrador") {
    	session_start();
		header("Location: cadastro1.php");
	}

	else if($perfil == "usuario") { 
		session_start();
		header("Location: menuuser.php");
	}
?>

Por exemplo os campos login e senha eu peguei de um form utilizando.

$login = $_POST ['login'];
$senha = $_POST ['senha'];

Mas como pegar nivel de acesso?

Postado

Eu fiquei na dúvida, você é administrador? Ele sabe que você esta tentando fazer isso? Você sabe programar?

 

O seu problema é simples, o mesmo(você), relata que os valores estão vindo de um formulário, quando tudo isso vai para a variável, agora é só você tratar/manipular os valores. Por isso eu perguntei se você realmente sabe programar.

 

Percebo que no seu código a pessoa seria redirecionada para uma pagina através de session's, mas é só isso? Também não vai especificar? E se alguém mal-intencionado fizer roubo de sessão?

 

Cade a conexão com o banco de dados?

Cade a seleção da database?

Postado

Boa tarde @Rickkdinho

 

Você não mostrou a estrutura da tabela usuários, mas imaginando uma tabela genérica, ela vai ter um ID, login, senha e o tipo de acesso.

 

Se o usuário informou o login e a senha, você terá que buscar essas informações no banco de dados para ver se estão corretas, por que não trazer o tipo de acesso como uma resposta para essa verificação?

 

exemplo:

 

SELECT tipo_acesso FROM usuarios WHERE login = ? AND senha = ?

 

Com uma query estilo essa, você já consegue resolver a verificação do login e do tipo de acesso. Entendeu?

Postado
1 minuto atrás, Forense disse:

Eu fiquei na dúvida, você é administrador? Ele sabe que você esta tentando fazer isso? Você sabe programar?

 

O seu problema é simples, o mesmo(você), relata que os valores estão vindo de um formulário, quando tudo isso vai para a variável, agora é só você tratar/manipular os valores. Por isso eu perguntei se você realmente sabe programar.

 

Percebo que no seu código a pessoa seria redirecionada para uma pagina através de session's, mas é só isso? Também não vai especificar? E se alguém mal-intencionado fizer roubo de sessão?

 

Cade a conexão com o banco de dados?

Cade a seleção da database?

sim amigo, eu seria o administrador, estou apreendendo a programar por isso vim tirar duvidas, ja fiz a conexao com bd mas n achei necessario colocar aqui ja que a minha pergunta seria apenas como abrir uma sessao de adm e pegar o valor da variavel direto do banco.

adicionado 4 minutos depois
3 minutos atrás, Leonardo0308 disse:

Boa tarde @Rickkdinho

 

Você não mostrou a estrutura da tabela usuários, mas imaginando uma tabela genérica, ela vai ter um ID, login, senha e o tipo de acesso.

 

Se o usuário informou o login e a senha, você terá que buscar essas informações no banco de dados para ver se estão corretas, por que não trazer o tipo de acesso como uma resposta para essa verificação?

 

exemplo:

 


SELECT tipo_acesso FROM usuarios WHERE login = ? AND senha = ?

 

Com uma query estilo essa, você já consegue resolver a verificação do login e do tipo de acesso. Entendeu?

Entao amigo eu acho que entendi o q você quiz dizer, estou fazendo assim para pegar o usuario e a senha

$sql = mysqli_query($conexao,"SELECT * FROM usuarios WHERE login = '$login' and senha = '$senha'") or die (mysqli_error());

Pelo q eu entendi pelo nome do usuario eu ja identificaria o nivel de acesso ,correto? Mas como faço para enviar cada um pra uma determinada pagina, é necessario abrir uma session pra cada?

  • Curtir 1
Postado

@Rickkdinho Não seria mais interessante os clientes fazerem o cadastro normalmente, enquanto você tem um painel onde tu concede as TAGS para os usuários? Desculpa perguntar se você era realmente o administrador, por que duas vezes o mesmo deu a entender que tem um dono/admin e você esta tentando fazer algo, observe:

 

Citação

já que não tem como definir um nivel de acesso para o usuario escolher, porque somente o adm pode definir isso

 

Você precisa conceder a TAG para o sujeito e não colocar Administrador para todos os perfis, nesse seu código, o cliente pode simplesmente escolher o que ele quer ser, entende? Poderia te mandar o código, só que eu vou ter que fazer do zero, precisaria de todos os dados, só que isso não seria uma ajuda né? Eu te daria o código de "mão beijada".

Postado
7 minutos atrás, Rickkdinho disse:

Pelo q eu entendi pelo nome do usuario eu ja identificaria o nivel de acesso ,correto?

 

Teoricamente, deveria ter uma coluna na sua tabela usuário para fazer isso, que não fosse o nome o usuário, imagina que um dia tenha 2 administradores no sistema, iria ser uma dor de cabeça para ajustar isso. Então fica a recomendação, cria uma coluna "tipo_acesso" e defina a hierarquia do usuário por lá.

 

10 minutos atrás, Rickkdinho disse:

Mas como faço para enviar cada um pra uma determinada pagina, é necessario abrir uma session pra cada?

 

Bem, você executou a query correto? você vai ter dois tipos de respostas, a primeira "0 linhas" ou seja a sua query não retornou nenhum usuário o que quer dizer que a senha ou login estão errados, a segunda reposta vai ser o retorno da linha do usuário, com as informações dele, inclusive a coluna "tipo_acesso" ou o nome do usuário (do jeito que você preferir programar).

 

Alias antes de continuar, você sabe como exibir as linhas que voltaram do seu select no banco?

 

Postado
4 minutos atrás, Forense disse:

@Rickkdinho Não seria mais interessante os clientes fazerem o cadastro normalmente, enquanto você tem um painel onde tu concede as TAGS para os usuários? Desculpa perguntar se você era realmente o administrador, por que duas vezes o mesmo deu a entender que tem um dono/admin e você esta tentando fazer algo, observe:

 

 

Você precisa conceder a TAG para o sujeito e não colocar Administrador para todos os perfis, nesse seu código, o cliente pode simplesmente escolher o que ele quer ser, entende? Poderia te mandar o código, só que eu vou ter que fazer do zero, precisaria de todos os dados, só que isso não seria uma ajuda né? Eu te daria o código de "mão beijada".

Com certeza, eu n iria aprender desse jeito, mas como eu te disse estou apreendendo, na parte que você disse q o cliente pode escolher seu nivel é por isso q eu estava querendo definir um direto no banco, eu não saberia fazer TAGS para o usuario.

Imagina, eu que me expressei mal, enfim obrigado pela atenção...

adicionado 11 minutos depois
8 minutos atrás, Leonardo0308 disse:

 

Teoricamente, deveria ter uma coluna na sua tabela usuário para fazer isso, que não fosse o nome o usuário, imagina que um dia tenha 2 administradores no sistema, iria ser uma dor de cabeça para ajustar isso. Então fica a recomendação, cria uma coluna "tipo_acesso" e defina a hierarquia do usuário por lá.

 

 

Bem, você executou a query correto? você vai ter dois tipos de respostas, a primeira "0 linhas" ou seja a sua query não retornou nenhum usuário o que quer dizer que a senha ou login estão errados, a segunda reposta vai ser o retorno da linha do usuário, com as informações dele, inclusive a coluna "tipo_acesso" ou o nome do usuário (do jeito que você preferir programar).

 

Alias antes de continuar, você sabe como exibir as linhas que voltaram do seu select no banco?

 

A estrutura da minha tabela esta assim:

id int(11) NO PRI NULL auto_increment

nome varchar(30) NO NULL

sobrenome varchar(30) NO NULL

sexo varchar(20) NO NULL

cpf varchar(11)NO NULL

perfil varchar(20) NO NULL

login varchar(30) NO NULL

senha varchar(20) NO NULL

 

 E o codigo, utilizei o num_rows para contar as linhas

 

<?php

$login = $_POST ['login'];
$senha = $_POST ['senha'];

$sql = mysqli_query($conexao,"SELECT * FROM usuarios WHERE login = '$login' and senha = '$senha'") or die (mysqli_error());
$row = mysqli_num_rows($sql);
?>

<?php
if ($row > 0){
	session_start();
	$_SESSION['login'] = $_POST['login'];
	$_SESSION['senha'] = $_POST['senha'];

	echo "<br><br><center><span class='foco-sucesso'>Efetuando Login!</span><br><br> Aguarde um instante.</center>";
	echo "<script>loginsucessfully()</script>";
	
} else {
	echo "<br><br><center><span class='foco-erro'>Dados inválidos!</span><br><br>Aguarde um instante e tente novamente.</center>";
	echo "<script>loginfailed()</script>";
}
echo ' <br><center><div class="loader"></div></center>';
?>

 

  • Moderador
Postado

@Rickkdinho O melhor jeito de resolver isso é criando uma nova tabela chamada tipos_acessos

Nesta tabela você popula só com  admin, usuario e técnico.

 

Então na sua tabela de usuarios, você cria um campo chamado tipo_conta  onde ele será um campo do tipo INT que servirá de chave estrangeira..

 

Depois disso, você cria o índice para esse campo na tabela e faz o relacionamento de 1:N entre a tabela tipos_acessos e usuario.

 

Para fazer a consulta basta usar o inner join algo como:

SELECT * FROM usuarios 
INNER JOIN tipos_acessos ON tipos_acessos.ID = usuarios.tipo_conta
WHERE usuarios.ID = $id

Este $id é uma variável contendo o valor ID do usuário, isso é feito durante o login, colocando ele em uma variável session.

 

Você poder uma explicação mais detalhada aqui:

 

 

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!