Jump to content
ewersonsv

[Resolvido][Sistema De Login] Como ativa nível na restrição de pagina

Recommended Posts

<?php 
	include 'config.php'; // Conexão Ao Bancos De Dados
	
	session_start();
	if(!isset($_SESSION['usuarioEmail']) || !isset($_SESSION["senha"])){
		header("Location: login");
		exit;
	} else {
		//echo "<script> window.alert('Você Ja Está Logado!'); </script>";
	}
	
?>

Eu queria ativa um Nivel de acesso para paginas, niveis: 1, 2 & 3....

no mysql a tabela do nivel é "niveis_acesso_id", tudo funcionando para determinados nivel mais queria por na restrição o valor do mesmo pois se nao por o mesmo não faz sentido '-' 

eu nao tenho a minima ideia alguém pode me ajuda?

 

eu queria se possivel fazer uma pagina exemplo:

 

admin > ID4

Mod > ID3

Play > ID2

Ban > ID1

 

Caso um Mod ou play acessa link: site.com/admin ele ser redirecionado para uma pagina informando: Vocênao tem permissão para acessa tal pagina

  • Gostei 2

Share this post


Link to post
Share on other sites

Normalmente você armazena o nível do usuário na própria tabela de usuário....

Aí por exemplo, o Cláudio tem nível 1 (User)...

João tem nível 2 (ADM)

 

E o Ronaldo tem nível 3 (Master)

 

 

É nas páginas que exigem perfil especial você coloca a verificação...

 

If (nivel < 2 ) die();

 

Se precisar de permissão especial dá pra criar uma tabela aparte e verificar o nível && nível_especial

Share this post


Link to post
Share on other sites
3 minutos atrás, gabrieldarezzo disse:

Normalmente você armazena o nível do usuário na própria tabela de usuário....

Aí por exemplo, o Cláudio tem nível 1 (User)...

João tem nível 2 (ADM)

 

E o Ronaldo tem nível 3 (Master)

 

 

É nas páginas que exigem perfil especial você coloca a verificação...

 

If (nivel < 2 ) die();

 

Se precisar de permissão especial dá pra criar uma tabela aparte e verificar o nível && nível_especial

@gabrieldarezzo - Certo, é campo eu escrevi tabela porque nao sei muito fui comparar agora no phpmyadmin :D

porém como eu acrescento no meu codigo :/ eu nao intendo muito tou aprendendo :D

  • Gostei 2

Share this post


Link to post
Share on other sites

A verificação de login deve trazer o nível como exemplifiquei.

 

 

Se vai lá na sua tabela e dá o select id, nível_usuario from usuario where nome = $nome AND senha = $senha

 

Se rownun== 0 

Die()

 

If (nivel < 2 ) die();

 

 

To no cel kkkk

Deu pra pegar +/-?

 

 

Share this post


Link to post
Share on other sites

Minha Select da forma que você falou: 

SELECT id, niveis_acesso_id FROM usuarios WHERE email = '$email' And senha = '$senha'

 

Citar

 

ESSA AQUI NAO INTENDO BEM:

Se rownun== 0 

Die()

 

If (nivel < 2 ) die();

 

 

 

@gabrieldarezzo tem whatsapp? se possível manda MP?

  • Gostei 2

Share this post


Link to post
Share on other sites

Eu catucando aqui fiz assim....

<?php 
	include '../config.php'; // Conexão Ao Bancos De Dados
	
	session_start();
	
	$nivel_necessario = 1;
	
	if(!isset($_SESSION['usuarioEmail']) || !isset($_SESSION["senha"]) OR ($_SESSION['usuarioNiveisAcessoId'] != $nivel_necessario) ){
		header("Location: login");
		exit;
		
	} else {
		//echo "<script> window.alert('Você Ja Está Logado!'); </script>";
	}
	
?>

1.0 > se sessão nao existi vai para login (CORRETO)
1.1 > se sessão email & senha existi e nivel nao for o id tal "1" vai para pagina login

porem eu quero por assim:

1.0 > se a sessão nao existir vá para pagina login (JA TÁ)

1.1 > se nao tive permissão ( nivel nao for o id tal "1" vai para pagina de aviso: VOcê Nao tem Tal Permissão)

 

Citar

Ou seja: o sistema verifica a sessão e segui verifica o nivel e dependente do nivel ela mostra a pagina referente ao resultado de erro ou permissão concedida.


 

  • Gostei 2

Share this post


Link to post
Share on other sites

Entendi...

Porem cade a verificação?!

 

 

Montei um exemplo pra ti...

<?php

/*
create database imasters;
use imasters;


CREATE TABLE usuario(
	 id  				int(8) primary key auto_increment
	,nome 				varchar(50) not null
	,niveis_acesso_id int(1) not null
);


INSERT INTO usuario(nome, niveis_acesso_id) values 
	('Cláudio', 1) 
	,('João', 2) 
;


select * from usuario;
+----+---------+------------------+
| id | nome    | niveis_acesso_id |
+----+---------+------------------+
|  1 | Cláudio |                1 |
|  2 | João    |                2 |
+----+---------+------------------+
*/

	

$db = new PDO('mysql:host=localhost;dbname=imasters', 'root', '');
$db->exec("set names utf8"); //Garante UTF em versão < 5.3


$stmt = $db->prepare("select id, niveis_acesso_id from usuario where id = :id");
//No seu ....
//"select * from usuario where nome = ? AND SENHA = ?"


$id = 1; // Busca Claudio
$stmt->bindParam(':id', $id, PDO::PARAM_INT);   
$stmt->execute();

$usuario = $stmt->fetch(PDO::FETCH_OBJ);
//Verifica usuario (senha e email)
if(!$usuario){
	die('Usuario não encontrado.');
}

//Verifica o nivel
if($usuario->niveis_acesso_id < 2){
	die("Apenas user 'ADM'");	
}

 

Share this post


Link to post
Share on other sites

No seu caso pelo q entendi/deduzi o login já foi efetuado, então você armazena o 'nivel' do usuario numa variavel de $_SESSION no ato do seu login...

 

 

Ai na sua:

 

'pagina_restrita.php':

 

if($_SESSION['niveis_acesso_id'] < 2){
	die("Apenas user 'ADM'");	
}

 

 

Share this post


Link to post
Share on other sites
2 horas atrás, gabrieldarezzo disse:

No seu caso pelo q entendi/deduzi o login já foi efetuado, então você armazena o 'nivel' do usuario numa variavel de $_SESSION no ato do seu login...

 

 

Ai na sua:

 

'pagina_restrita.php':

 


if($_SESSION['niveis_acesso_id'] < 2){
	die("Apenas user 'ADM'");	
}

 

 

esse aqui que você falou é tipo se for menor "<" que "2" é restrito para admin ?! se for maior ">" é outro cargo? 

 

<?php 
	include '../config.php'; // Conexão Ao Bancos De Dados
	
	session_start();
	
	if(!isset($_SESSION['usuarioEmail']) || !isset($_SESSION["senha"])){
		header("Location: login");
		exit;
		
	} else if($_SESSION['niveis_acesso_id'] < 2){
	header("Location: ./admin");
	} 
	else if($_SESSION['niveis_acesso_id'] > 2){
	header("Location: ./user");	
	}
	
?>

porem ja fiz diversos numeros 1 ~ 3 e so recebe o comando do ./admin nunca passa para o ./user .

ja tentei com igual "=="  ou diferente "!=" .

  • Gostei 2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By dutopfave
      Galera tenho um cadastro de cliente que preenche nome e login, ai quando digita o nome, automaticamente ele preenche o login, pra agiliza, ta assim: $("#inputdonome").blur(function(){ $("#login").val($(this).val()); }); só que to com problema de nome repetido, então vou muda ao invés de preenche automático com nome, preenche com EMAIL, porém tem como preenche automático o login só q para antes de chega no '@'   ai ficaria assim:

      E-mail: contato2019@site.com.br
      Login: contato2019
    • By tiago.rizzon
      Boa tarde pessoal!
      Alguém poderia me dizer oq está errado na minha primeira tentativa de conectar com DB mysql?
      Em anexo coloquei print do erro no browser e print dos dados de acesso ao banco.
      Meu usuário é megasys.com, o nome do DB q quero acessar é CL001... q contem uma tabela teste FUN...
      Desde já agradeço!!
      Obrigado!
       
      meu index.php está assim:
       
      <!DOCTYPE html>
      <html>
      <body>
      <?php
      $link = mysql_connect('mysql22.redehost.com.br,3306', 'megasys.com', 'minhaSenha');
      if (!$link) {
          die('Não foi possível estabelecer uma conexão com o MySQL : ' . mysql_error());
      }
      $db_selected = mysql_select_db('CL001', $link);
      if (!$db_selected) {
          die ('Não foi possivel acessar o banco de dados: ' . mysql_error());
      }
      ?>
      </body>
      </html>


    • By JenneferBarbosa
      <label>Data Inicio</label> <input type="date" name="data_inicio-incluir" id="data_inicio-incluir"> <label>Data Fim</label> <input type="date" name="data_fim-incluir" id="data_fim-incluir"> Boa tarde pessoal, estou iniciando em JS e não sei como fazer a validação de datas. Estou fazendo um sistema de aluguel de livros, então,  como consigo verificar se a data_fim não é menor que a data inicio e que a data_fim seja de 1 até 7 dias depois da data_inicio, não podendo ultrapassar. Se alguém tiver como me ajudar, ficarei muito grata.  
    • By WitchMad
      Ooi gente!
      Seguinte, estou desenvolvendo uma plataforma para advogados. Nela será consultado processos a partir do web service do PJE.
      No site do PJE me recomendou utilizar o NuSoap para consultar o web service e foi o que eu fiz.
      Segue o código da consulta
      <?php require_once 'nusoap/lib/nusoap.php'; /* Parâmetros Requisitados */ // idConsultante // senhaConsultante // numeroProcesso /* Objetos de Resposta sucesso bollean Indica se houve sucesso na consulta do processo. mensagem string Mensagem informando que o processo foi consultado com sucesso. recibo xs:base64Binary Comprovante do protocolo do processo, que contém os dados básicos do processo. */ $wsdl = "https://www.tjpe.jus.br/pje/intercomunicacao?wsdl"; $client = new nusoap_client($wsdl, 'wsdl'); if($client->getError()){ echo "Erro no construtor" . $client->getError(); exit(); } $result = $client->call('consultarProcesso', array('idConsultante'=>'CPF do Consultante', 'senhaConsultante'=>'Senha do Consultante', 'numeroProcesso'=>'Número do Processo')); echo $result['sucesso']; ?> Acontece que a página fica em branco, sem nenhum tipo de mensagem.
      Se possível gostaria de dicas se há algum erro no código, ou alguma outra ferramenta para consultar web service
    • By Cascais51
      Olá, pessoal!
      Tenho um banco de dados com 111 tabelas de um sistema de gestão feito para um cliente. Acontece que agora quero transformar esse sistemas em SaaS, Quero manter ele com a mesma base, apenas incluindo uma tabela "licencas" onde terei o cadastro de meus clientes na modalidade SaaS com as configurações necessárias e possíveis ligações com tabelas de mensalidades e etc.
      Pois bem, para não fazer grandes alterações nesse sistema, adicionei uma coluna de nome "licenca" em cada uma das 111 tabelas e fiz uma chave estrangeira em cada uma ligando a chave primária da tabela "licencas" (id_licenca).
      A ideia é com mais tempo organizar para apenas as tabelas chaves terem essa ligação com a tabela licencas, mas por enquanto tenho pouco tempo, mas gostaria de saber de vocês se ter essa coluna "licenca"  em todos as tabelas ligando a tabela licenças vai ser muito custoso em processamento para meu banco de dados, ou é indiferente?

      Acham que eu deveria deixar o campo sem chave estrangeira?
       
      Enviei a imagem com o diagrama de apenas 5 tabelas para ilustrar. são muitas tabelas para enviar todas.

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.