Gerenciador De Ficheiros E Documentos – Parte 1

Seríe de 2 artigos > Próximo Artigo: Gerenciador De Ficheiros E Documentos – Parte 2

Nas matérias anteriores postamos várias matérias com sistemas completos!

Esta matéria não podería ser diferente…

Hoje vamos falar sobre o Gerenciador de Ficheiros.

Você pode falar: Ah, mas na Internet vejo vários!

Este sistema é diferente, pois ele lhe dá a opção de trabalhar com 3 tipos de usuários:

  • Administrador (usuário que terá acesso completo);
  • SubAdmin (Um tipo de Supervisor, que terá recursos de Administrador, porém, de forma limitada);
  • Cliente (terá acesso à opções mínimas).

Finalidade Do Gerenciador De Ficheiros E Documentos

Este Gerenciador tem por finalidade guardar na Internet documentos essenciais!

Imagina uma situação…

Você precisa enviar um ficheiro a seu cliente ou funcionário, mas quer fazer de forma rápida, sem usar email.

Através deste Gerenciador você terá essa chance sem muito trabalho.

Bem… Como fazemos em todas as nossas matérias, em anexo estaremos disponibilizando os ficheiros para que tu possa estudar e testar a matéria que estamos lhe explicando, porém, ele entrará apenas na segunda parte desta matéria. ok?

Abaixo vamos disponibilizar a informação passo a passo. ok?

Criando as Tabelas na Base de Dados MySQL

Antes de partirmos para a programação, abra o ficheiro script-sql.txt (disponível em anexo) e cole seu conteúdo no Programa utilizado para gerenciamento da base de dados.

Em nossas matérias utilizamos como padrão o MySQLFront. Caso tu também esteja utilizando este programa, clique em SQL Editor e cole o conteúdo do script (conforme código e imagem abaixo).



CREATE TABLE `tbl_relacionamento_arquivos` (
  `relacionamento_id` int(11) NOT NULL auto_increment,
  `relacionamento_subadmin_id` int(11) NOT NULL default '0',
  `relacionamento_nome_arquivo` varchar(100) NOT NULL default '',
  `relacionamento_from` varchar(100) NOT NULL default '',
  `relacionamento_to` varchar(10) NOT NULL default '',
  `relacionamento_data` varchar(100) NOT NULL default '',
  `relacionamento_descricao` varchar(100) NOT NULL default '',
  `relacionamento_extensao` varchar(100) NOT NULL default '',
  `relacionamento_tamanho` varchar(100) NOT NULL default '',
  PRIMARY KEY  (`relacionamento_id`)
) TYPE=InnoDB AUTO_INCREMENT=165 ;

INSERT INTO `tbl_relacionamento_arquivos` VALUES (151, 0, 'delete.gif', '3', '23', '1083003169', 'AdministradorParaSubadmin01', 'gif', '189');
INSERT INTO `tbl_relacionamento_arquivos` VALUES (153, 0, 'm-formulas.gif', '3', '26', '1083004333', 'AdministradorParaCliente02', 'gif', '1325');
INSERT INTO `tbl_relacionamento_arquivos` VALUES (154, 0, 'bullet.gif', '27', '23', '1083007216', 'Subadmin02ParaSubadmin01', 'gif', '196');
INSERT INTO `tbl_relacionamento_arquivos` VALUES (156, 0, 'btn_ok.gif', '23', '3', '1083008718', 'Subadmin01ParaAdministrador', 'gif', '935');
INSERT INTO `tbl_relacionamento_arquivos` VALUES (158, 0, 'm-formulas.gif', '27', '3', '1083008759', 'Subadmin02ParaAdministrador', 'gif', '1325');
INSERT INTO `tbl_relacionamento_arquivos` VALUES (160, 0, 'm2b-materia-prima.gif', '23', '27', '1083010479', 'Subadmin01ParaUsuario02', 'gif', '703');
INSERT INTO `tbl_relacionamento_arquivos` VALUES (161, 0, 'm2b-materia-prima.gif', '23', '27', '1083010479', 'Subadmin01ParaUsuario02', 'gif', '703');
INSERT INTO `tbl_relacionamento_arquivos` VALUES (162, 0, 'arquivos_comentados.txt', '23', '27', '1083011720', 'Subadmin01ParaSubadmin02', 'txt', '751');
INSERT INTO `tbl_relacionamento_arquivos` VALUES (163, 0, 'arquivos_comentados.txt', '23', '27', '1083011720', 'Subadmin01ParaSubadmin02', 'txt', '751');
INSERT INTO `tbl_relacionamento_arquivos` VALUES (164, 0, 'arquivos_comentados.txt', '3', '24', '1083068410', 'AdministradorParaCliente01', 'txt', '751');


CREATE TABLE `tbl_usuarios` (
  `usuarios_id` int(11) NOT NULL auto_increment,
  `usuarios_username` varchar(100) NOT NULL default '',
  `usuarios_password` varchar(100) NOT NULL default '',
  `usuarios_nome` varchar(100) NOT NULL default '',
  `usuarios_tipo` varchar(100) NOT NULL default '',
  `usuarios_email` varchar(100) NOT NULL default '',
  `usuarios_empresa` varchar(100) NOT NULL default '',
  `usuarios_data` varchar(100) NOT NULL default '',
  PRIMARY KEY  (`usuarios_id`)
) TYPE=InnoDB AUTO_INCREMENT=29 ;

INSERT INTO `tbl_usuarios` VALUES (3, 'admin', '123mudar', 'Administrador', 'a', '', '', '');
INSERT INTO `tbl_usuarios` VALUES (23, 'subadmin01', '123mudar', 'Subadmin 01', 's', '', '', '');
INSERT INTO `tbl_usuarios` VALUES (24, 'usuario01', '123mudar', 'Cliente 01', 'c', '', '', '');
INSERT INTO `tbl_usuarios` VALUES (26, 'usuario02', '123mudar', 'Cliente 02', 'c', '', '', '1082476900');
INSERT INTO `tbl_usuarios` VALUES (27, 'subadmin02', '123mudar', 'Subadmin 02', 's', '', '', '1082476926');  

Carregando Informações no BD

Após importar os dados, você poderá conferir o conteúdo inserido (conforme imagem a seguir).

Conferindo Informações Cadastradas

Considerações Importantes

Tendo gerado as tabelas junto a base de dados, vamos agora dar início à programação.

Antes de qualquer coisa, precisamos fazer uma observação: O sistema utiliza um path relativo.

O que é isso? Bem… no topo de cada página virá a observação a seguir!

Isto fará o sistema reconhecer o diretório qu está sendo trabalhado e manterá a autenticação dos dados.

código PHP

Agora vamos analisar os ficheiros?

Definindo Os Diretórios

Abaixo mostrarei a descrição completa dos diretórios, para que cada um serve!

PORTA_ARQUIVOS

  • CONFIG
  • CSS
  • FILES
  • IMG
  • INC
  • LIB
  • LOG
  • SHARED

CONFIG
- É o diretório onde guardaremos todas as informações de gravação à base de dados MySQL e as configurações globais.

CSS
- Diretório onde guardaremos os ficheiros .css, que deverão conter informações em css.

FILES
- Neste diretório estarão guardados todos os ficheiros enviados pelos usuários.

IMG
- Diretório padrão onde guardaremos as imagens do layout do sistema.

INC
- Dentro deste diretório estará o ficheiro responsável pela autenticação dos usuários.

LIB
- Dentro deste diretório estarão ficheiros responsaveis por autenticações e configurações específicas.

LOG
- Dentro deste diretório estarão os ficheiros com log das principais funções do sistema.

SHARED
- Dentro deste diretório estará o ficheiro responsável por trazer as principais configurações do Header.

Analisando Os Ficheiros

Para facilitar, vamos dar início a esta atividade analisando os ficheiros por pasta!

Iniciaremos nossos serviços pelo diretório “CONFIG”.

Neste diretório você encontrará 2 ficheiros:

  • database.config.php
  • global.variaveis.php

DATABASE.CONFIG:


<?php

// BANCO DE DADOS LOCALHOST
$db_hostname = "localhost"; // DADOS DO SERVIDOR
$db_name = "porta_arquivos"; // NOME DA BASE DE DADOS
$db_username = "root"; // USUÁRIO DE ACESSO AO MYSQL
$db_password = ""; // SENHA DE ACESSO AO MYSQL

//==========================================================
$db_type = "mysql";
//mysql, postgresql ou mssql (nesta versão estamos enviando apenas mysql)
//==========================================================

//==========================================================
$sysarray ['sistema'] ['dbexecmode'] = "producao";
$db_execmode = $sysarray ['sistema'] ['dbexecmode'];

//definindo os erros que aparecem ao usuario
$array_erro ['db'] ['conectar'] = "Impossível conectar à base de dados. Um relatório com prioridade máxima foi enviado ao Administrador notificando a falha.<br>Solicitamos que tente acessar novamente mais tarde, pedindo enormes desculpas pelo inconveniente.";
$array_erro ['db'] ['selecionar'] = "Impossível conectar à base de dados específica. Um relatório com prioridade máxima foi enviado ao Administrador notificando a falha.<br>Solicitamos que tente acessar novamente mais tarde, pedindo enormes desculpas pelo inconveniente.";
$array_erro ['db'] ['query_vazia'] = "Query vazia";
$array_erro ['db'] ['conexao_invalida'] = "Conexão inválida com o banco";
$array_erro ['db'] ['impossivel_executar_query'] = "Impossível executar query no servidor SQL. Um relatório com prioridade máxima foi enviado ao Administrador notificando a falha.<br>Solicitamos que tente acessar novamente mais tarde, pedindo enormes desculpas pelo inconveniente.";
$array_erro ['db'] ['resultado_invalido'] = "result resource da query inválido";
$array_erro ['db'] ['fetch_array'] = "Impossível extrair resultado.";
?>

OBS.:

No ficheiro acima você pode ver que além dos dados de acesso há também de forma personalizada os erros mais comuns.

GLOBAL.VARIAVEIS.PHP:


<?php
//este arquivo define as variaveis de configuracao do sistema
//destinatarios a serem notificados se erro ocorrer

$sysarray ['notificar'] [] = "comandosusa@gmail.com"; // ALTERE PARA SEU ENDEREÇO DE EMAIL

//session
$sysarray ['sessao'] ['nome'] = "principal";

//sistema
$sysarray ['sistema'] ['pages_title'] = "WebMaster.PT :: Porta-arquivos";  // Título da Página
$sysarray ['sistema'] ['nome_sistema'] = "Porta-arquivos WebMaster.PT";  // Nome do Sistema
$sysarray ['sistema'] ['nome_empresa'] = "WebMaster.PT";  // Nome da Empresa
$sysarray ['sistema'] ['path_relativo'] = "/porta_arquivos"; // CAMINHO NO SERVIDOR
$sysarray ['sistema'] ['cssfile'] = "default.css";
$sysarray ['sistema'] ['email_admin'] = "comandosusa@gmail.com"; // ALTERE PARA SEU ENDEREÇO DE EMAIL

$sysarray ['erro_handler'] ['default'] = "O <b>{$sysarray ['sistema'] ['nome_sistema']}</b> verificou falha temporária ao processar as informações solicitadas. Solicitamos que tente acessar novamente mais tarde, pedindo enormes desculpas pelo inconveniente.<br>O <a href='mailto:{$sysarray ['sistema'] ['email_admin']}'>Administrador técnico do sistema</a> já foi avisado do problema.";

//EXECMODE
$sysarray ['sistema'] ['execmode'] = 'producao';

//layout
$sysarray ['layout'] ['background_color'] = "#FFFFFF";

// WEBMASTER.PT
$sysarray ['layout'] ['syscolor_table_dark'] = "#889DC1";
$sysarray ['layout'] ['syscolor_table_medium'] = "#C5CFE7";

$sysarray ['layout'] ['syscolor_table_light'] = "#DCE2ED";

$sysarray ['layout'] ['syscolor_border_dark'] = "#637EAD";
$sysarray ['layout'] ['syscolor_border_medium'] = "#8198BE";
$sysarray ['layout'] ['syscolor_border_light'] = "#B9C6DB";

$sysarray ['layout'] ['tamanho_tables'] = "650";

$sysarray ['layout'] ['imagem_logo'] = "logo.gif";
?>

OBS.:

No ficheiro acima, o sistema configura o “TÍTULO” a ser apresentado em tela, “NOME” do sistema, “CAMINHO” e principalmente: “EMAIL” para onde deverão ser encaminhadas as mensagens de erro.

Há também configurações específicas de CSS (podem ser alteradas, conforme sua necessidade).

Falando em css, vamos agora ao diretório CSS.

Após acessar este diretório, encontraremos o ficheiro “default.css”.

Veja como aparece o código:

DEFAULT.CSS:


.TitleBrancoMedio
{
    font-family : Verdana, Arial, Helvetica, sans-serif;
    font-size : 13.5px;
   font-weight: bold;
    line-height : 17px;
    color : FFFFFF;
    text-decoration : "none";
}

.TextoPretoMedio
{
    font-family : Verdana, Arial, Helvetica, sans-serif;
    font-size : 11px;
   font-weight: normal;
    line-height : 14px;
    color : 000000;
    text-decoration : "none";
}

.TextoPretoPequeno
{
    font-family : Verdana, Arial, Helvetica, sans-serif;
    font-size : 10.5px;
   font-weight: normal;
    line-height : 12px;
    color : 000000;
    text-decoration : "none";
}

.TextoPretoMinimo
{
    font-family : Verdana, Arial, Helvetica, sans-serif;
    font-size : 9px;
   font-weight: normal;
    line-height : 10px;
    color : 000000;
    text-decoration : "none";
}

.TextoPretoGrande
{
    font-family : Verdana, Arial, Helvetica, sans-serif;
    font-size : 12px;
   font-weight: normal;
    line-height : 18px;
    color : 000000;
    text-decoration : "none";
}
.CursorLink
{
  cursor: pointer;
  cursor: hand;
}

Bem… o CSS poderá ser melhorado, dependendo de suas necessidades!

Feita a verificação no diretório CSS, vamos agora ao diretório FILES.

OBS.: Todos os documentos deverão estar dentro deste diretório.

Para não haver qualquer erro, altere as configurações do diretório, dando acesso a leitura e gravação!

Vamos pular o diretório IMG (que terá apenas imagens do layout) e vamos ao diretório INC, responsável pelo ficheiro “autenticacao.rotinas.php”.

Vamos analisar o script?

AUTENTICACAO.ROTINAS.PHP:

codigo

OBS.: Veja que o código acima tem por finalidade efetuar a autenticação dos acessos.

Ele dá acesso a 3 tipos de usuários:

  • A – ADMINISTRADOR
  • S – SUBADMIN
  • C – CLIENTE

Bem… daremos continuação a este e outros assuntos na próxima semana!

Para você saber como ficará o sistema, veja as telas a seguir:

Tela de Acesso ao Sistema:

TELA DE ACESSO AO SISTEMA

Tela Principal do ADMINISTRADOR:

TELA PRINCIPAL DO ADMIN

TELA PRINCIPAL DO ADMIN - CONTINUAÇÃO

Fique ligado em nossas matérias! Com certeza você vai gostar do resultado final desta matéria.

Be Sociable, Share!

10 Comentários

  1. santos

    onde esta o link de download  ?

  2. Paulo da PCR

    Simplesmente, perfeito, se tivesse um campo pra texto referente ao arquivo pra upload, tipo explicação ou um texto pra pessoa explicando o arquivo seria mais que perfeito. Parabéns.

  3. joao carlos

    Bom dia,instalei o sietema, porem não consigo gravar novos usuarios.

  4. renan

    nao consigo gerar esse banco de dados alguem conseguiu upa pra gente ai e manda o link

  5. [Wed Jan 14 15:29:09 2015] [error] [client 10.42.43.1] PHP Notice: Undefined index: enviar in /home/guedes/site/gerenciador/upload.php on line 44, referer: http://10.42.43.1/gerenciador/DefaultSubadmin.php
    [Wed Jan 14 15:29:24 2015] [error] [client 10.42.43.1] PHP Notice: Undefined index: usuarios_email in /home/guedes/site/gerenciador/upload.php on line 60, referer: http://10.42.43.1/gerenciador/upload.php

    Me ajuda ai…

  6. ola boa noite alguem poderia me ajudar..? olha o tipo de erro 

    Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/u275707333/public_html/config/conexao.php on line 10

    Warning: mysql_connect(): Access denied for user 'u460493179_pasta'@'10.1.2.34' (using password: YES) in /home/u275707333/public_html/config/conexao.php on line 10
    Erro ao conectar o MySQL

  7. Olavo Ferreira

    Ola, amigão esta dando um erro na hora que vou importar o SQL

    #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '—– CRIA A TABELA DE RELACIONAMENTO DE ARQUIVOS —–
    CREATE TABLE `tbl_usuar' at line 1

  8. Adill

    Muito bom parceiro esta em uso fiquei impressionado com o material PARABENS

Participa! Comenta...