Ir ao conteúdo
  • Cadastre-se

Login de usuários com restrição de grupos em php


Posts recomendados

Boa noite amigos,

 

Venho por meio deste pedir ajuda aos amigos, até mesmo pelo fato ainda eu ser novato no assunto programação.

 

Estou tentando construir um sistema de login de usuários que são controlados pelos seus grupos.

 

Exemplo:

 

Os usuários Pedro, Maria e João pertence ao grupo de tecnologia.

 

Os usuários Antonio, Mario e Luiz pertence ao grupo financeiro.

 

Gostaria que quando cada um desses usuários efetuasse login no sistema web cada um tivesse sua página de acordo com seu grupo.

 

Exemplo:

Pedro se cadastrou no dia 10/01/2014 então ele poderia ver as noticias referente a tecnologia desde a data de cadastro para frente, João também é do mesmo grupo porém se cadastrou dia 20/05/2014 então ele só visualizaria as noticia de tecnologia dessa data para frente.

E assim sucessivamente.

 

Agradeço a todos desde já.

Caso alguém se interesse e ajudar com explicações serei muito grato, já possui as telas de login, sessão, validação, estou empacada nessa parte dos grupos.

Obrigado.

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

Olá @mcoimbra,

Primeiramente seja bem vindo.

 

Sobre o problema:

Como você disse que já possui o front-end e uma parte do backend, vou tentar resumir ao máximo e ao mesmo tempo que possas entender a mecânica da coisa.

 

Começaremos pelo banco de dados.

O BD precisa de:

  • Uma tabela chamada por exemplo de "tGrupos" que recebe apenas 2 campos, ID(auto incrementado) e nome(este campo conterá os nomes dos grupos).
  • Na tabela usuarios, é necessário um campo chamado tgrupos será uma chave estrangeira que recebe o valor da chave primária da tabela tGrupos.

Partindo agora para o back-end(PHP):

No arquivo php que recebe os dados  do formulário, você vai fazer uma consulta ao BD e resgatando  os campos que quer comparar.. como por exemplo ID do usuário, login, senha, ID do grupo, e armazene alguns deles na sessão como por exemplo o ID, nome do usuário e o grupo que ele pertence...

Com estes dados  você primeiro compara se o login e senha estão corretos. Assumindo que sim,  você coloca em um switch - case .. que recebe como parâmetro o ID do grupo... e aí você pode definir que se o usuário for do grupo de tecnologia, você redireciona ele para uma pagina por exemplo index_tecnologia.php.. e assim por diante.

 

A questão das noticias aparecerem de acordo com a data cadastrada, você precisa ter um campo  na tabela de noticias que contem a data.. .e um campo de data na tabela usuários(  o dia que foi cadastrado) eaí compara-los e filtrar a consulta das noticias de acordo com a data de cadastro do usuário.

Link para o comentário
Compartilhar em outros sites

Caro @dif, primeiramente muito obrigado desde já.

 

Fiz alguns dos passo como citados acima criei a tabela Grupos com nome_grup e id_grup, também realizei a chave estrangeira na tabela usuarios na coluna tgrupos.

No entanto o que me complica agora é a parte do back-end, eu teria que cadastrar algo na tabela Grupos?

Como eu poderia realizar a verificação de login, usuario e id e armazenar, como não tenho pleno entendimento ainda a parte do back-end ficou meio complicada para meu entendimento.

 

Se pudesse claro, teria como me ajudar posto até meu código pra você, ou se preferir libero acesso aos arquivos.

 

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Moderador

 

criei a tabela Grupos com nome_grup e id_grup, também realizei a chave estrangeira na tabela usuarios na coluna tgrupos.

No entanto o que me complica agora é a parte do back-end, eu teria que cadastrar algo na tabela Grupos?

 

Perfeito.  Sim a tabela grupos precisa ser populada. Para isso podes inserir os nomes dos grupos manualmente se for poucos.  Se forem muitos e/ou posteriormente vai adicionar mais aí teria que criar um formulário para inserção de dados nesta tabela.

 

 

 

Como eu poderia realizar a verificação de login, usuario e id e armazenar, como não tenho pleno entendimento ainda a parte do back-end ficou meio complicada para meu entendimento.

 

Veja este exemplo simples e estude ele, com as explicações.

 

Front-end exemplo:

<form action="recebeDados.php" method="post">  <input type="text" name="email" />  <input type="password" name="senha" />  <input type="submit" value="Logar"</form>

Back-end:

<?php  session_start();		$login = $_POST["email"];	$senha = $_POST["senha"];	$login_escape = addslashes($login);	$senha_escape = addslashes($senha);			if (empty($login) or empty($senha)):    echo "<script>          alert('Preencha todos os campos');          history.go(-1);          </script>";    exit;      endif;			include '../conexao/conexao.php';		$sql = "SELECT id,nome, email, senha FROM users WHERE login ='$login_escape' AND senha = '$senha_escape' ";	$dados = mysqli_query($sql, $conexao);	$num = mysqli_num_rows($dados);		if ($num == 0):		echo "<script>				alert('Usuario ou senha Incorreta');				history.go(-1);			  </script>";		exit;	else:				while($user = mysqli_fetch_object($dados)):		     $coduser = $user->id;	             $nome    = $user->nome;					     $_SESSION["codusuario"] = $coduser;		     $_SESSION["email"] = $login;		     $_SESSION['nome'] = $nome;                     header ("Location: view/gpainel.php");                endwhile;        endif; 	 mysqli_close($conecta);?>

Explicação do back-end:

 

Na linha 2, é iniciada a sessão.

Linhas 4 e 5, Variáveis que recebe os dados do formulário

LInhas 6 e 7, adiciona um escape "contra-barra"

Linhas 10 a 16, Verifica se os campos  do formulário estão vazio.

Linha 19, chamada da conexão com o banco de dados.

Linha 21, consulta ao banco.

Linha 22, executa a instrução SQL

Linha 23, Retorna o número de linhas.

Linhas 25 ao 30, Verificação que se o número de linhas for igual a zero

LInhas 33 a 41, Loop de while, com a variável que recebe o retorno de $dados

Linhas 34 e 35, Variáveis recebendo os campos da tabela

Linhas 37, 38 e 39, adiciona nas variáveis de sessão, o ID do usuário, o login e o nome.

Linha 40,  redireciona o usuário para a página definida.

Linha 43, fecha a conexão com o banco de dados.

 

PS: no exemplo usei com o plugin "mysqli" pois é o padrão do easyPHP 14.1

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