Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
<?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>
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 :DA 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 +/-?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?Meu uso de PM, Skype é apenas profissionalmente.
Qual sua dúvida?
Testou oq eu exemplifiquei?
Onde está o código?
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.
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;$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);if(!$usuario){
die('Usuario não encontrado.');
}
//Verifica o nivel
if($usuario->niveis_acesso_id < 2){
die("Apenas user 'ADM'");
}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'");
}>
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 "!=" .
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...