Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS

Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17253
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Sistema de login com níveis de acesso banco de dados MySQL

04-01-2015 16:42

Nesse post mostro um exemplo bem simples de script de login com nível de acesso usando banco de dados MySQL, onde cada usuário logado terá acesso somente a página que o administrador desejar.

Funciona da seguinte forma:
Um usuário previamente cadastrado no banco de dados, vai acessar um documento do site.
Nesse documento, vai ter definido em um variável o nível de acesso necessário para acesso a ela.
Se o usuário não estiver logado, irá ser mostrado a ele um formulário para que ele entre com os dados de acesso para fazer o login.
Após logado, cada página que o usuário acessar será verificado o nível de acesso que a página tem, e verificado se o usuário logado pode acessar a mesma.

banco de dados - já com um usuário

CREATE TABLE IF NOT EXISTS `acesso` ( `id` INT(11) NOT NULL,   `usuario` VARCHAR(15) NOT NULL,   `senha` VARCHAR(32) NOT NULL,   `nivel` INT(11) NOT NULL ) INSERT INTO `acesso` (`id`, `usuario`, `senha`, `nivel`) VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 1);

config.php - configuração de acesso ao bd e script anti-injection

<?php // CONEXÃO $dbhost="localhost"; /* servidor */ $dbuser=""; /* usuário do banco de dados */ $dbpasswd=""; /* senha do banco de dados */ $dbname=""; /* nome do banco de dados */ $conexao = mysql_connect($dbhost, $dbuser, $dbpasswd) or die ("não foi possível a conexão, verifique os dados."); mysql_select_db($dbname) or die ("não foi possível o acesso ao banco de dados $dbname."); // ANTI-INJECTION function anti_injection($sql){    $sql = preg_replace("/( from |select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/", "" ,$sql);    $sql = trim($sql);    $sql = strip_tags($sql);    $sql = (get_magic_quotes_gpc()) ? $sql : addslashes($sql);    return $sql; } ?>

página a ser protegida
A página que será protegida precisa seguir um padrão.
No topo das páginas que serão protegidas deve ter o seguinte:

<?php // INICIANDO A SESSION session_start(); // NÍVEL NECESSÁRIO PARA VER A PÁGINA ATUAL $nivel = 1; // INCLUDE DO ARQUIVO DE CONFIGURAÇÃO E DO ARQUIVO seguro.php include("config.php"); include("seguro.php"); ?> CONTEÚDO DO ARQUIVO

Como adicional, você pode colocar esse código abaixo para quando o usuário estiver logado, ter um link para deslogar.

<?php if(isset($_SESSION['usua']) OR isset($_SESSION['senh'])) { echo "<a href=\"deslogar.php\">deslogar</a>"; } ?>

deslogar.php

<?php session_start();  session_destroy();  header("Location: index.php");  exit;  ?>

O arquivo seguro.php deve ter o seguinte conteúdo:

<?php // QUANDO TENTANDO LOGAR if(isset($_POST['acesso'])=="Logar") { // VERIFICANDO SE USUÁRIO E SENHA ESTÃO VAZIOS if(isset($_POST['usuario'])=="" || isset($_POST['senha'])=="") { echo "Os dados de acesso devem ser preenchidos"; exit; } // LOGANDO E CRIANDO AS SESSIONS $logar = mysql_query("SELECT usuario, senha, nivel FROM acesso WHERE usuario='".anti_injection($_POST['usuario'])."' AND senha='".anti_injection(md5($_POST['senha']))."' AND nivel='".anti_injection($nivel)."'"); if(mysql_num_rows($logar) >= 1) { $_SESSION['usua'] = $_POST['usuario']; $_SESSION['senh'] = md5($_POST['senha']); echo "<script> alert('Acesso permitido'); location.href='index.php'; </script>"; } else { echo "<script> alert('Acesso restrito'); </script>"; } } // VERIFICANDO SE O NÍVEL DA PÁGINA É VÁLIDA PARA O USUÁRIO LOGADO if(@$_SESSION['usua'] AND @$_SESSION['senh']) { $verifica_nivel = mysql_query("SELECT usuario, senha, nivel FROM acesso WHERE usuario='".anti_injection($_SESSION['usua'])."' AND senha='".anti_injection($_SESSION['senh'])."' AND nivel='".anti_injection($nivel)."'"); if(mysql_num_rows($verifica_nivel) >= 1) { // ACESSO CORRETO } else { echo "<script> alert('Você não tem o nível de acesso para essa página'); history.back(); </script>"; exit; } } // CASO NÃO LOGADO, MOSTRA O FORMULÁRIO if(!isset($_SESSION['usua']) OR !isset($_SESSION['senh']) OR $_SESSION['usua']=="" OR $_SESSION['senh']=="") { ?> <form action="" method="post"> Usuário <input type="text" name="usuario" value=""> <br /> Senha <input type="text" name="senha" value=""> <br /> <input type="submit" name="acesso" value="Logar"> </form> <?php exit; } ?>

Qualquer dúvida ou sugestão só postar.
0
Criar site grátis Wix
Hospedagem de sites Hostgator
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum
:rock:

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado