Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Matheus Strik

[Resolvido] Menus para diferentes níveis de usuário

Recommended Posts

Olá "IMasteres" !

Sou iniciante na programação PHP e estou desenvolvendo uma espécie de TCC para meu curso técnico.

Ele consiste em um sistema de Email Marketing (HTML + CSS + PHP + MySQL). Já estou vendo tutoriais e desenvolvendo algumas coisas.

Indo ao que interessa, gostaria que me dessem dicas de como fazer um menu diferenciado para cada nivel de usuário. Por exemplo, o admin pode acessar o menu CONFIGURAÇÕES e o usuário comum não. esse tipo de coisa. Quero desenvolver nesse esquema pois não quero fazer o sistema inteiro para cada tipo de usuário. Creio que assim ficaria mais prático para futuras alterações.

 

Grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

começando do zero;

 

criando um sistema incrível e sem usar sessões;

você vai precisar de:

 

  • um código único de segurança
  • um nome de user que poderia ser o email
  • uma tabela no banco com um campo type para definir o tipo de user
  • um template com o menu

 

criando a tabela de users

 

CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`username` VARCHAR(150) CHARACTER SET utf8 NOT NULL,
`security` VARCHAR(80) CHARACTER SET utf8 NOT NULL,
`senha` VARCHAR(80) CHARACTER SET utf8 NOT NULL,
`usertype` VARCHAR(50) CHARACTER SET utf8 NOT NULL
) ENGINE=innoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

 

username; poderá ser o email ou qualquer outro nome

security; o cod de segurança

usertype; aqui damos privilegios para cada tipo de user

 

 

gerando o código de segunrança isso já na hora do cadastro do user

lembrando código único e esta função abaixo verifica se ele já existe ( quase impossível existir )

 

<?
function cod(){
$tempcod = substr(md5(uniqid(time())), 0, 15); // com 15 carácteres

// vamos checar se já existe esse cod em users

$check=mysql_num_rows(mysql_query("SELECT * FROM `users` WHERE `security` = '{$tempcod}'"));
if($check==1){return cod();} // função recursiva, volta pra ela mesma se já existi e gera outro
return $tempcod;
}

$usercod=cod(); // pronto cod de segurança criado;

?>

 

 

 

 

a pessoa enviou no formulário o nome de user que ele quer e a senha que ele quer e aqui no cadastro você pega

 

<?
function noXss($value){return strip_tags($_POST[$value]);} // contra ataques XSS

$username=noXss('username'); // username é o nome do input text lá no formulário
$senha=noXss('senha'); // senha é o nome do input password lá no formulário
?>

 

como este usuário é só mais um normal vamos salvar ele normalmente por aqui

 

PARA CADASTRAR O ADIMIN CADASTRE MANUALMENTE E COLOQUE O TIPO PARA "ADM" E GERE UM COD É CLARO

 

 

<?
$registro=mysql_query("INSERT INTO `users` (`id`, `username`, `security`, `senha`, `usertype`) VALUES (NULL,'{$username}','{$usercod}','{$senha}','tipo_membro_normal')"); 

// no último ali você define o tipo de user e dá privilégios a ele

if($registro){
echo 'você foi cadastrado com sucesso';
}
else{
echo 'houve um erro por favor tentar novamente';
}

?>

 

 

você já fez tudo e agora é hora de setar um menu para cada tipo pessoa

 

 

lembrando que não adianta esconder o menu e o cara consegui acessar pela url, para isso lá na página de adm você precisa também colocar as verificações

 

 

sem aquele codigo a pessoa poderia burlar e entrar com o nome do administrador e ai teria todo previlégio, mas com o cod se alguém burlar e entrar com o nome do adm ele não vai saber o código do adm que será comparado com o dele e vai está errado.

 

 

cria uma página separada com o menu;

 

deixe a pessoa fazer login com method=post e lá no login você verifica se os dados de user e senha está certo com o da tabela user se estiver redireciona ele com get;

 

e manda ele para = [ pagina_de_users.php?user=nome_dele&cod=00000000000 ]

 

lá em login pega esses dados igual lá em baixo e manda na url acima

 

 

pagina_de_users.php

<?
// NO COMEÇO DA PAG PRINCIPAL

// pega aqui em pagina_de_users.php com get
$user=strip_tags($_GET['user']);
$cod=strip_tags($_GET['cod']);

// vamos verificar se está certo se não o cara vai enviar na url dados falsos

$pegardados=mysql_query("SELECT * FROM `users` WHERE `username` = '{$user}' AND `security` = '{$cod}'");
if(mysql_num_rows($pegardados) == 0){
echo 'ERROR'; exit(); // ou redirecina ele para index
}

// Chama o menu aqui;

require('skins/menu.php');

?>

 

NOTA: você já fez a conexão com o banco para tudo isso e colocou a conexão lá no começo da pg;

 

 

 

 

lá na pagina "menu.php"

<?
// vamos pegar os dados de quem está conectado;

$pegardados=mysql_query("SELECT * FROM `users` WHERE `username` = '{$user}' AND `securyt`  = '{$cod}'");
$array=mysql_fetch_array($pegardados);
$type=$array['usertype']; // tipos de users ex: adm, moderador, normal

function menu($usertype){
switch($usertype):
case 'normal':
return '
<div id=""> 
<ul>
<span> texto </span> 
<span> texto </span> 
<span> texto </span> 
</ul>
</div>
';
case 'adm':
return '
<div id=""> 
<ul>
<span> Painel de Controle </span> 
<span> texto </span> 
<span> texto </span> 
</ul>
</div>
';
break;
break

endswitch; 
}

$menu_para_cada_tipo=menu($array['usertype']);

?>

 

onde você vai colocar o menu você coloca isso;

 

<? echo $menu_para_cada_tipo; ?>

 

 

 

hoje não aguento escrever mais nada, rss

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.