Alguem poderia me ajudar com uma duvida
eu tenho um banco de dados que cadastr um usuario e colica ele como nivel 0 1 e 2 preciso que quando o usuario entre o sistema pegue estes niveis e abra a pagina direcionada para cada um deles…tentei comando simples php…
<?php
session_start();
// Perfil e nível de acesso
$user_normal = 0;
$user_premium = 1;
$user_adm = 2;
if(isset($_SESSION['UsuarioID']) && isset($_SESSION['UsuarioNivel'])){
if($_SESSION['UsuarioNivel'] == $user_normal){
header("Location: coordenador.php");
echo "Olá ".$_SESSION['UsuarioID']." [$usuario]";
}elseif ($_SESSION['UsuarioNivel'] == $user_premium){
header("Location: gerente.php");
echo "Olá ".$_SESSION['UsuarioID']." [$usuario]";
}elseif ($_SESSION['UsuarioNivel'] == $user_adm ){
header("Location: ADM/index.html");
echo "Olá ".$_SESSION['UsuarioID']." [$usuario]";
}
}else{
session_destroy();
header("Location: index.html");
echo "A sessao 'UsuarioID' e/ou 'UsuarioNivel' nao existe(m).";
exit;
}
?>
simplificando o usuário entra no sistema eh validado e quando esta ok este script entre em ação direcionando ele para cada pagina porem não entendi o pq esta destruindo a sessão.
Cara faz um favor (na verdade boa prática) formata o código pra gente vai?
Você pedir uma ajuda blz, agora querer que a gente leia seu código todo amontoado desse jeito não vira né, nos ajude a te ajudar jovem!?
desculpe estou ainda aprendendo a usar a plataforma
Vou te mostrar outra forma de fazer e vc ve se melhora/ajuda:
<?php
// Perfil e nível de acesso
define('USER_NORMAL', 0);
define('USER_PREMIUM', 1);
define('USER_ADM', 2);
session_start();
if (!isset($_SESSION['UsuarioID']) || !isset($_SESSION['UsuarioNivel'])) {
session_destroy();
header("Location: index.html");
exit;
}
$url = 'index.html';
switch ($_SESSION['UsuarioNivel']) {
case USER_NORMAL:
$url = 'coordenador.php';
break;
case USER_PREMIUM:
$url = 'gerente.php';
break;
case USER_ADM:
$url = 'ADM/index.html';
break;
}
header("Location: $url");
exit;
?>
Troquei suas variáveis por constantes já que cada numero representa um perfil, variáveis não são a melhor escolha aqui, pois você pode “trocar” seus valores sem perceber em outro ponto do script e bugar tudo, usando define você não corre esse risco (boa prática como nome de constante sempre em caixa alta/letra maiúscula)…
Boa prática em php, sempre que usar header(‘Location…’) use um exit após, isso evita o script continuar pois o header pode ter um “certo atraso” executando linhas abaixo dele que não eram pra rodar, pesquise mais a respeito para entender…
Percebeu que tirei os echos do script? O ideal é deixar cada um em sua página responsável, afinal trata-se de uma saudação e cada página pode ter a sua, além do mais, se o header for executado, o echo nem irá aparecer por estar na página anterior pegou?
Caso ainda esteja “matando” a session, você terá de ver outras páginas que chamam session_destroy…
Vai testando, são formas de fazer e você vai descobrir a melhor, boa sorte!
brigadao!! vlw irei ver aqui