* @link http://thiagobelem.net/ * * @version 1.0 * @package SistemaSeguranca */ // Configurações do Script // ============================== $_SG['conectaServidor'] = false; // Abre uma conexão com o servidor MySQL? $_SG['abreSessao'] = true; // Inicia a sessão com um session_start()? $_SG['caseSensitive'] = false; // Usar case-sensitive? Onde 'thiago' é diferente de 'THIAGO' $_SG['validaSempre'] = true; // Deseja validar o usuário e a senha a cada carregamento de página? // Evita que, ao mudar os dados do usuário no banco de dado o mesmo contiue logado. $_SG['servidor'] = 'localhost'; // Servidor MySQL $_SG['usuario'] = 'admfacil_01'; // Usuário MySQL $_SG['senha'] = 'igor_002'; // Senha MySQL $_SG['banco'] = 'admfacil_01'; // Banco de dados MySQL $_SG['paginaLogin'] = '/admin/login.php'; // Página de login $_SG['paginaLoginModal'] = '/admin/login_modal.php'; // Página de login $_SG['tabela'] = 'users'; // Nome da tabela onde os usuários são salvos // ============================== // ====================================== // ~ Não edite a partir deste ponto ~ // ====================================== // Verifica se precisa fazer a conexão com o MySQL if ($_SG['conectaServidor'] == true) { $_SG['link'] = mysqli_connect($_SG['servidor'], $_SG['usuario'], $_SG['senha'], $_SG['banco']); //mysqli_connect(, , ) or die("MySQL: Não foi possível conectar-se ao servidor [".$_SG['servidor']."]."); //mysql_select_db(, $_SG['link']) or die("MySQL: Não foi possível conectar-se ao banco de dados [".$_SG['banco']."]."); } // Verifica se precisa iniciar a sessão if ($_SG['abreSessao'] == true) { if (!isset($_SESSION["usuarioID"])) { session_start(); } } /** * Função que valida um usuário e senha * * @param string $usuario - O usuário a ser validado * @param string $senha - A senha a ser validada * * @return bool - Se o usuário foi validado ou não (true/false) */ function validaUsuario($conexao, $usuario, $senha) { global $_SG; // Usa a função addslashes para escapar as aspas $nusuario = addslashes($usuario); $nsenha = addslashes($senha); // Cria uma instância da classe de conexão // Monta uma consulta SQL (query) para procurar um usuário usando prepared statement $stmt = $conexao->prepare("SELECT `id`, `nome`, `email`, `senha2`, `status` FROM `users` WHERE `email` = :usuario AND `status`='admin' LIMIT 1"); $stmt->bindParam(':usuario', $nusuario); $stmt->execute(); $resultado = $stmt->fetch(PDO::FETCH_ASSOC); // Verifica se encontrou algum registro if (empty($resultado)) { // Nenhum registro foi encontrado => o usuário é inválido return false; } else { // Verifica a senha usando a função password_verify if (!password_verify($nsenha, $resultado['senha2'])) { // A senha não é válida return false; } // O registro foi encontrado => o usuário é valido // Definimos dois valores na sessão com os dados do usuário if ($resultado['status'] == "admin") { $_SESSION["admin"] = "on"; $_SESSION["pesquisa"] = "true"; } $_SESSION['id_usuario'] = $resultado['id']; $_SESSION['usuarioID'] = $resultado['id']; $_SESSION['usuarioNome'] = $resultado['nome']; $_SESSION['usuarioLogin'] = $resultado["email"]; $_SESSION['usuarioSenha'] = $resultado["senha2"]; $_SESSION['nome'] = $resultado['nome']; $_SESSION['emailf'] = $resultado['email']; $_SESSION['status'] = $resultado['status']; return true; } } function validaUsuario1($usuario, $senha) { global $_SG; $cS = ($_SG['caseSensitive']) ? 'BINARY' : ''; // Usa a função addslashes para escapar as aspas $nusuario = addslashes($usuario); $nsenha = addslashes($senha); // Monta uma consulta SQL (query) para procurar um usuário $sql = "SELECT `id`, `nome`, `status`, `email` FROM `".$_SG['tabela']."` WHERE ".$cS." `email` = '".$nusuario."' AND ".$cS." `senha` = '".$nsenha."' and (status='admin' or status='autor') LIMIT 1"; $query = mysqli_query($_SG['link'], $sql); $resultado = mysqli_fetch_array($query); // Verifica se encontrou algum registro if (empty($resultado)) { // Nenhum registro foi encontrado => o usuário é inválido return false; } else { // O registro foi encontrado => o usuário é valido // Definimos dois valores na sessão com os dados do usuário $_SESSION['id_usuario'] = $resultado['id']; // Pega o valor da coluna 'id do registro encontrado no MySQL $_SESSION['usuarioID'] = $resultado['id']; // Pega o valor da coluna 'id do registro encontrado no MySQL $_SESSION['usuarioNome'] = $resultado['nome']; // Pega o valor da coluna 'nome' do registro encontrado no MySQL $_SESSION['nome'] = $resultado['nome']; // Pega o valor da coluna 'nome' do registro encontrado no MySQL $_SESSION['emailf'] = $resultado['email']; // Pega o valor da coluna 'nome' do registro encontrado no MySQL $_SESSION['status'] = $resultado['status']; // Pega o valor da coluna 'nome' do registro encontrado no MySQL $_SESSION['admin'] = "on"; // Pega o valor da coluna 'nome' do registro encontrado no MySQL // Verifica a opção se sempre validar o login if ($_SG['validaSempre'] == true) { // Definimos dois valores na sessão com os dados do login $_SESSION['usuarioLogin'] = $usuario; $_SESSION['usuarioSenha'] = $senha; } return true; } } /** * Função que protege uma página */ function protegePagina() { global $_SG; // Verifica o token CSRF if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) { // Não há usuário logado, manda pra página de login expulsaVisitante(); } else if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) { // Há usuário logado, verifica se precisa validar o login novamente if ($_SG['validaSempre'] == true) { // Verifica se os dados salvos na sessão batem com os dados do banco de dados if (!validaUsuario($_SESSION['usuarioLogin'], $_SESSION['usuarioSenha'])) { // Os dados não batem, manda pra tela de login expulsaVisitante(); } } } } /** * Função para expulsar um visitante */ function expulsaVisitante() { global $_SG; // Remove as variáveis da sessão (caso elas existam) unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'], $_SESSION['usuarioLogin'], $_SESSION['usuarioSenha']); // Manda pra tela de login header("Location: ".$_SG['paginaLogin']); } ?>