arapiraca 2013

655
Arapiraca 2013 MOISÉS SANTOS FARIAS SISTEMA DE ENSINO PRESENCIAL CONECTADO ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PINGO PHP Sistema Simples de Gerenciamento e Monitoramento de Pequenas Redes Locais

Upload: unopar

Post on 20-Feb-2023

1 views

Category:

Documents


0 download

TRANSCRIPT

Arapiraca 2013

MOISÉS SANTOS FARIAS

SISTEMA DE ENSINO PRESENCIAL CONECTADO ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

PINGO PHP Sistema Simples de Gerenciamento e Monitoramento de Pequenas

Redes Locais

Arapiraca 2013

PINGO PHP Sistema Simples de Gerenciamento e Monitoramento de Pequenas

Redes Locais

Trabalho de Conclusão de Curso apresentado à Universidade Norte do Paraná - UNOPAR, como requisito parcial para a obtenção do título de Tecnologia em Análise e Desenvolvimento de Sistemas. Tutor Orientador: Kleverson Ricardo de Melo Prof. Orientador: Marco Ikuro Hisatomi

MOISÉS SANTOS FARIAS

LISTA DE FIGURAS

Figura 1 - Login ......................................................................................................... 32 Figura 2 - Login: Alerta p/ informar o login ................................................................ 33

Figura 3 - Login: Alerta p/ informar senha ................................................................. 34 Figura 4 - Login: Alerta sobre o tamanho da senha .................................................. 35 Figura 5 - Login: Alerta sobre login com usuário não existentes no sistema ............. 36 Figura 6 - Página Inicial ............................................................................................. 37 Figura 7 - Página Inicial: botão Monitoramento ......................................................... 38

Figura 8 - Página Inicial: botão Inventário ................................................................. 39 Figura 9 - Página Inicial: botão Administração .......................................................... 40

Figura 10 - Página Inicial: botão Relatório ................................................................ 41

Figura 11 - Inventário ................................................................................................ 42 Figura 12 - Inventário: botão Estações ...................................................................... 43 Figura 13 - Inventário: botão Nós de rede ................................................................. 44 Figura 14 - Inventário: botão Dispositivos ................................................................. 45 Figura 15 - Inventário - Estações .............................................................................. 46

Figura 16 - Inventário - Estações: botão Cadastrar Estação ..................................... 47

Figura 17 - Inventário - Estações: botão Alterar estação .......................................... 48 Figura 18 - Inventário - Estações: botão Excluir Estação .......................................... 49

Figura 19 - Inventário - Estações - Cadastrar Estação: Form ................................... 50 Figura 20 - Inventário - Estações - Cadastrar Estação: alerta p/ informar nome ....... 51 Figura 21 - Inventário - Estações - Cadastrar Estação: alerta p/ informar IP ............ 52

Figura 22 - Inventário - Estações - Cadastrar Estação: alerta p/ informar Local ....... 53

Figura 23 - Inventário - Estações - Cadastrar Estação: alerta p/ informar Status ..... 54 Figura 24 - Inventário - Estações - Cadastrar Estação: alerta sobre cadastro com sucesso ..................................................................................................................... 55

Figura 25 - Inventário - Estações: listagem das estações cadastradas ..................... 56 Figura 26 - Inventário - Alterar Estação ..................................................................... 57

Figura 27 - Inventário - Alterar Estação: informa que nenhuma estação foi selecionada ............................................................................................................... 58 Figura 28 - Inventário - Alterar Estação: Form .......................................................... 59 Figura 29 - Inventário - Alterar Estação: alerta sobre estação alterada com sucesso .................................................................................................................................. 60 Figura 30 - Inventário - Estações - Excluir Estação ................................................... 61

Figura 31 - Inventário - Estações - Excluir Estação: alerta informando que nenhuma estação foi selecionada para exclusão ...................................................................... 62 Figura 32 - Inventário - Estações - Excluir Estação: alerta sobre exclusão com sucesso ..................................................................................................................... 63 Figura 33 - Inventário - Nós de Rede ........................................................................ 64

Figura 34 - Inventário - Nós de Rede: botão Cadastrar Nó de rede .......................... 65 Figura 35 - Inventário - Nós de Rede: botão Alterar Nó de rede ............................... 66 Figura 36 - Inventário - Nós de Rede: botão Excluir Nó de rede ............................... 67 Figura 37 - Inventário - Nós de Rede - Cadastrar Nó de rede: Form ........................ 68 Figura 38 - Inventário - Nós de Rede - Cadastrar Nó de rede: alerta p/ usuário informar o nome do nó de rede ................................................................................. 69 Figura 39 - Inventário - Nós de Rede - Cadastrar Nó de Rede: alerta p/ usuário informar o IP do nó de rede ....................................................................................... 70 Figura 40 - Inventário - Nós de Rede - Cadastrar Nó de rede: alerta p/ usuário

informar o local do nó de rede ................................................................................... 71

Figura 41 - Inventário - Nós de Rede - Cadastrar Nó de rede: alerta p/ usuário informar o status do nó de rede ................................................................................. 72 Figura 42 - Inventário - Nós de rede - Cadastrar Nó de Rede: informa que nó de rede foi cadastrado com sucesso ...................................................................................... 73 Figura 43 - Inventário - Nós de rede - Listagem dos nós de rede cadastrados ......... 74

Figura 44 - Inventário - Nós de Rede - Alterar Nó de rede ........................................ 75 Figura 45 - Inventário - Nós de Rede - Alterar Nós de Rede: informa que nenhum nó de rede foi selecionado para ser alterado ................................................................. 76 Figura 46 - Inventário - Nó de Rede - Alterar Nó de Rede: Form .............................. 77 Figura 47 - Inventário - Nós de Rede - Alterar Nó de rede: alerta que nó de rede foi alterado com sucesso ............................................................................................... 78 Figura 48 - Inventário - Nós de Rede - Excluir Nó de Rede ...................................... 79

Figura 49 - Inventário - Nós de rede - Excluir Nó de rede: alerta que nenhum nó de rede foi selecionado p/ ser excluído .......................................................................... 80 Figura 50 - Inventário - Nós de Rede - Excluir Nó de Rede: alerta que nó de rede foi excluído com sucesso ............................................................................................... 81

Figura 51 - Monitoramento ........................................................................................ 82 Figura 52 - Monitoramento: botão Monitoramento .................................................... 83 Figura 53 - Monitoramento: botão Últimas Ocorrências ............................................ 84

Figura 54 - Monitoramento: botão Grupos ................................................................ 85 Figura 55 - Monitoramento - Monitoramento ............................................................. 86

Figura 56 - Monitoramento - Monitoramento: botão Monitorar Grupo ....................... 87 Figura 57 - Monitoramento - Monitoramento: botão Monitorar Estação .................... 88

Figura 58 - Monitoramento - Monitoramento: botão Monitorar Nó de Rede .............. 89 Figura 59 - Monitoramento - Monitoramento: botão Monitorar Dispositivo ................ 90 Figura 60 - Monitoramento - Monitoramento - Monitoramento por Grupo ................. 91

Figura 61 - Monitoramento - Monitoramento - Monitorar Grupo ................................ 92 Figura 62 - Monitoramento - Monitoramento - Monitoramento por Estação .............. 93

Figura 63 - Monitoramento - Monitoramento - Monitorar Estação: informa que nenhuma estação foi selecionada ............................................................................. 94

Figura 64 - Monitoramento - Monitoramento - Monitorar Estação ............................. 95 Figura 65 - Monitoramento - Monitoramento - Monitoramento por Nó de rede ......... 96 Figura 66 - Monitoramento - Monitoramento - Monitorar Nó de Rede: informa que nenhum nó de rede foi selecionado .......................................................................... 97 Figura 67 - Monitoramento - Monitoramento - Monitorar Nó de Rede ....................... 98

Figura 68 - Monitoramento - Monitoramento - Monitoramento por Dispositivo .......... 99 Figura 69 - Monitoramento - Monitoramento - Monitorar Dispositivo: informa que nenhum dispositivo foi selecionado ......................................................................... 100 Figura 70 - Monitoramento - Monitoramento - Monitorar Dispositivo ....................... 101 Figura 71 - Monitoramento - Últimas Ocorrências ................................................... 102 Figura 72 - Monitoramento - Grupos ....................................................................... 103 Figura 73 - Monitoramento - Grupos: botão Cadastrar Grupo ................................. 104

Figura 74 - Monitoramento - Grupos: botão Alterar Grupo ...................................... 105 Figura 75 - Monitoramento - Grupos: botão excluir Grupo ...................................... 106 Figura 76 - Monitoramento - Grupos - Cadastrar Grupo ......................................... 107 Figura 77 - Monitoramento - Grupos - Cadastrar Grupo: alerta ao usuário p/ informar nome do Grupo ....................................................................................................... 108

Figura 78 - Monitoramento - Grupos - Cadastrar Grupo: alerta que grupo foi cadastrado com sucesso ......................................................................................... 109

Figura 79 - Monitoramento – Grupos – Alterar Grupo ............................................. 110

Figura 80 - Monitoramento - Grupos - Alterar Grupo: informa que nenhum grupo foi selecionado p/ ser alterado ..................................................................................... 111 Figura 81 - Monitoramento - Grupos - Alterar Grupo: Form .................................... 112 Figura 82 - Monitoramento - Grupos - Alterar Grupo: alerta que grupo foi alterado com sucesso ........................................................................................................... 113

Figura 83 - Monitoramento - Grupos - Excluir Grupo .............................................. 114 Figura 84 - Monitoramento - Grupos - Excluir Grupo: alerta que grrupo foi excluído com sucesso ........................................................................................................... 115 Figura 85 - Administração ....................................................................................... 116 Figura 86 - Administração: botão Cadastrar usuário ............................................... 117

Figura 87 - Administração: botão Alterar Usuário .................................................... 118 Figura 88 - Administração: botão Excluir Usuário ................................................... 119

Figura 89 - Administração - Cadastrar Usuário: Form ............................................. 120 Figura 90 - Administração - Cadastrar Usuário: alerta p/ usuário informar o nome do usuário a ser cadastrado ......................................................................................... 121 Figura 91 - Administração - Cadastrar Usuário: alerta p/ usuário informar o perfil do usuário a ser cadastrado ......................................................................................... 122 Figura 92 - Administração - Cadastrar Usuário: alerta p/ usuário informar o login do usuário a ser cadastrado ......................................................................................... 123

Figura 93 - Administração - Cadastrar Usuário: alerta p/ usuário informar a senha do usuário a ser cadastrado ......................................................................................... 124

Figura 94 - Administração - Cadastrar Usuário: alerta que usuário foi cadastrado com sucesso ................................................................................................................... 125

Figura 95 - Administração - Alterar Usuário ............................................................ 126 Figura 96 - Administração - Alterar Usuário: Form .................................................. 127 Figura 97 - Administração - Alterar Usuário: alerta que usuário foi alterado com sucesso ................................................................................................................... 128 Figura 98 - Administração - Excluir Usuário ............................................................ 129

Figura 99 - Administração - Excluir Usuário: alerta que usuário foi excluído com sucesso ................................................................................................................... 130

Figura 100 - Administração - Meus Dados: Form .................................................... 131 Figura 101 - Relatório .............................................................................................. 132 Figura 102 - Relatório: botão Relatório de Ocorrências .......................................... 133

Figura 103 - Relatório: botão Relatório de Usuário ................................................. 134 Figura 104 - Relatório: botão Relatório de Ativo...................................................... 135

Figura 105 - Relatório - Relatório de Ocorrências .................................................. 136 Figura 106 - Relatório - Relatório de Ocorrências - Ocorrências por Estação........ 137

Figura 107 - Relatório - Relatório de Ocorrências - Ocorrências por Nó de Rede . 138 Figura 108 - Relatório - Relatório de Ocorrências - Ocorrências por Dispositivo ... 139 Figura 109 - Relatório - Relatório de Usuário ......................................................... 140 Figura 110 - Relatório - Relatório de Usuário - Acessos por Data .......................... 141 Figura 111 - Relatório - Relatório de Usuário - Acessos por Usuário ..................... 142

Figura 112 - Relatório - Relatório de Usuário - Ações por Data ............................. 143 Figura 113 - Relatório - Relatório de Usuário - Ações por Usuário ........................ 144 Figura 114 - Relatório - Relatório de Ativo ............................................................. 145

SUMÁRIO

1 INTRODUÇÃO ................................................................................................... 14

2 JUSTIFICATIVA ................................................................................................ 15

3 OBJETIVOS ....................................................................................................... 16

3.1 Objetivo Geral ................................................................................................. 16

3.2 Objetivos Específicos ..................................................................................... 16

4 REFERENCIAL TEÓRICO ................................................................................ 17

5 METODOLOGIA ................................................................................................ 19

6 CARACTERIZAÇÃO DA ORGANIZAÇÃO EM ESTUDO ................................. 20

7 TECNOLOGIA ................................................................................................... 21

8 LEVANTAMENTO DE REQUISITOS ................................................................ 22

8.1 REQUISITOS FUNCIONAIS .......................................................................... 22

8.2 REQUISITOS NÃO FUNCIONAIS .................................................................. 23

9 DIAGRAMA DE CASO DE USO ....................................................................... 24

10 DIAGRAMA DE CLASSE .............................................................................. 25

10.1 DESCRIÇÃO DO DIAGRAMA DE CLASSE ................................................... 26

11 DIAGRAMA DE SEQUÊNCIA ........................................................................ 27

12 DIAGRAMA DE ATIVIDADES ....................................................................... 30

13 DIAGRAMA DE ENTIDADE E RELACIONAMENTO .................................... 31

14 TELAS ............................................................................................................ 32

15 CÓDIGO FONTE .......................................................................................... 146

15.1 COMANDOS SQL ........................................................................................ 146

15.1.1 Criação das Tabelas ................................................................................. 146

15.1.2 Criação das Stored Procedures (Procedimentos Armazenados) .............. 149

15.1.2.1 Procedimentos “inserir” ......................................................................... 149

15.1.2.2 Procedimentos “excluir” ......................................................................... 153

15.1.2.3 Procedimentos “alterar” ......................................................................... 154

15.1.2.4 Procedimentos “pesquisar” .................................................................... 158

15.1.3 Inserções .................................................................................................. 170

15.2 CÓDIGO HTML, CSS E PHP ....................................................................... 170

15.2.1 CRUD ........................................................................................................ 170

15.2.1.1 Arquivo conexao.class.php .................................................................... 170

15.2.1.2 Página cadastrar.php ............................................................................ 171

15.2.1.3 Arquivo inserir.class.php ....................................................................... 176

15.2.1.4 Página alterar.php ................................................................................. 186

15.2.1.5 Arquivo alterar.class.php ....................................................................... 192

15.2.1.6 Página excluir.php ................................................................................. 204

15.2.1.7 Arquivo excluir.class.php ....................................................................... 209

15.2.1.8 Arquivo pesquisar.class.php .................................................................. 214

15.2.2 CÓDIGO CSS (comum.css) ...................................................................... 253

15.2.3 PÁGINA INDEX.HTML .............................................................................. 259

15.2.4 PÁGINA LOGIN.PHP ................................................................................ 261

15.2.5 PÁGINA HOME.PHP ................................................................................ 264

15.2.6 PÁGINA LOGOUT.PHP ............................................................................ 268

15.2.7 INVENTÁRIO ............................................................................................ 269

15.2.7.1 Página index.php ................................................................................... 269

15.2.7.2 Página dispositivos.php ......................................................................... 275

15.2.7.3 Página cadastrardispositivo.php ............................................................ 283

15.2.7.4 Página alterardispositivo.php ................................................................ 290

15.2.7.5 Página verdispositivo.php ...................................................................... 297

15.2.7.6 Página excluirdispositivo.php ................................................................ 307

15.2.7.7 Página noderede.php ............................................................................ 314

15.2.7.8 Página alterarnoderede.php .................................................................. 322

15.2.7.9 Página vernoderede.php ....................................................................... 330

15.2.7.10 Página excluirnoderede.php .............................................................. 341

15.2.7.11 Página cadastrarnoderede.php .......................................................... 348

15.2.7.12 Página estacoes.php ......................................................................... 357

15.2.7.13 Página cadastrarestacao.php ............................................................ 366

15.2.7.14 Página alterarestacao.php ................................................................. 375

15.2.7.15 Página verestacao.php ...................................................................... 382

15.2.7.16 Página excluirestacao.php ................................................................. 393

15.2.8 ADMINISTRAÇÃO .................................................................................... 401

15.2.8.1 Página index.php ................................................................................... 401

15.2.8.2 Página cadastrarusuario.php ................................................................. 408

15.2.8.3 Página alterarusuario.php ..................................................................... 417

15.2.8.4 Página verusuario.php ........................................................................... 424

15.2.8.5 Página excluirusuario.php ..................................................................... 432

15.2.8.6 Página meus_dados.php ....................................................................... 440

15.2.9 MONITORAMENTO .................................................................................. 450

15.2.9.1 Arquivo pingo.class.php ........................................................................ 450

15.2.9.2 Página index.php ................................................................................... 454

15.2.9.3 Página monitoramento.php ................................................................... 459

15.2.9.4 Página monitoramento_grupo.php ........................................................ 465

15.2.9.5 Página monitorar_grupo.php ................................................................. 474

15.2.9.6 Página monitoramento_estacao.php ..................................................... 491

15.2.9.7 Página monitorar_estacao.php .............................................................. 499

15.2.9.8 Página monitoramento_noderede.php .................................................. 509

15.2.9.9 Página monitorar_noderede.php ........................................................... 517

15.2.9.10 Página monitoramento_dispositivo.php ............................................. 527

15.2.9.11 Página monitorar_dispositivo.php ...................................................... 535

15.2.9.12 Página grupos.php ............................................................................. 545

15.2.9.13 Página cadastrargrupo.php ................................................................ 555

15.2.9.14 Página alterargrupo.php .................................................................... 567

15.2.9.15 Página vergrupo.php .......................................................................... 577

15.2.9.16 Página excluirgrupo.php .................................................................... 591

15.2.9.17 Página ultimas_ocorrencias.php ........................................................ 601

15.2.10 RELATÓRIO .......................................................................................... 610

15.2.10.1 Página index.php ............................................................................... 610

15.2.10.2 Página relat_ativo.php ....................................................................... 615

15.2.10.3 Página relat_usuario.php ................................................................... 625

15.2.10.4 Página relat_ocorrencias.php ............................................................ 635

15.2.10.5 Página gerar_relatorio.php ................................................................ 640

16 CRONOGRAMA ........................................................................................... 657

17 CONCLUSÃO .............................................................................................. 658

REFERÊNCIAS ....................................................................................................... 659

14

1 INTRODUÇÃO

O monitoramento de ativos de redes (roteador, switch, gateway,

servidor, etc.) é imprescindível numa infraestrutura de rede. O monitoramento almeja

detectar problemas de conectividade entre os dispositivos interligados, bem como

comunicar os responsáveis pela rede acerca de inconstâncias encontradas na

infraestrutura da rede.

No mercado há várias ferramentas de monitoramento de redes,

como Zabbix, Nagios, The Dude, PRTG, Zennos, Cacti, WhatsUp Gold, Open-AudIT,

Observium e outras. O monitoramento traz mais controle e agilidade na tomada de

decisão sobre a estrutura de rede. Ter uma infraestrutura bem sólida e monitorada é

essencial, pois muitos serviços dependem das redes de computadores.

Andrew S. Tanenbaum e Kurose e Ross, três mestres na área de

Redes de Computadores, influenciaram na conceituação e entendimento dos

componentes das redes. As disciplinas de Desenvolvimento de Aplicações Web,

Programação Web II, Banco de Dados I e Banco de Dados II também influenciaram

o desenvolvimento do presente trabalho. O campo de estágio também direcionou a

construção da aplicação, pois a empresa onde o sistema foi desenvolvido é pioneira

na cidade em tecnologia e mesmo sendo pequena, ela possui uma estrutura bem

avançada, com profissionais da área de informática.

O Trabalho de Conclusão de Curso está disposto da seguinte forma:

no item 2 é apresentada a justificativa para o presente trabalho; no item 3 consta os

objetivos geral e específicos. Já no item 4 o referencial teórico, onde é apresentado

um arcabouço de conhecimento que embasaram o trabalho. O item 5 consta a

metodologia adotada para o desenvolvimento do trabalho. No item 6 está

caracterizada a síntese da empresa-escola onde o estágio foi desenvolvido. Já no

item 7 é apresentado os insumos tecnológicos usados para o desenvolvimento da

aplicação. O item 8 está listado os requisitos encontrados, bem como uma breve

descrição do sistema existente. Os itens 9, 10, 11, 12 e 13 apresentam os diagramas

de caso de uso, de classe, de sequência, de atividades e entidade e relacionamento,

respectivamente. Já no item 14 são exibidos ‘screenshots’ das interfaces gráficas da

aplicação desenvolvida e no item 15 é apresentado o código fonte da aplicação. No

item 16 é exibido o cronograma usado para todo o projeto de desenvolvimento do

sistema. Por fim, no item 17 é apresentada a conclusão do TCC.

15

2 JUSTIFICATIVA

Segundo Kurose e Ross (2006):

Uma rede consiste em muitas peças complexas de hardware e software que interagem umas com as outras – desde os enlaces, comutadores, roteadores, hospedeiros e outros dispositivos, que são os componentes físicos da rede, até os muitos protocolos (tanto em hardware quanto em software) que controlam e coordenam esses componentes. [...] O administrador de rede, cuja tarefa é mantê-la “viva e atuante”, deve estar habilitado a reagir a esses contratempos (e, melhor ainda, evita-los). [...] evidentemente necessita de ferramentas que o auxiliem a monitorar, administrar e controlar a rede. (grifo meu) (KUROSE e ROSS, 2006, p.571).

Logo é necessário existir mecanismos de gerenciamento para o

bem-estar duma rede de computadores. Nishitani (2010, p.80) ratifica tal posição ao

afirmar que “de certa forma, todos os dispositivos de rede exigem algum nível de

gerenciamento”.

Como vantagens pela utilização de software de gerenciamento de

redes, Kurose e Ross (2006, p.572-573) diz ser possível detectar “falhas em uma

placa de interface de hospedeiro ou de um roteador [...] monitoração de tráfego [...]

detecção de mudanças rápidas nas tabelas de roteamento [...] detecção de

intrusos”.

A empresa em estudo dispõe de ferramenta para gerenciamento da

rede (“Myauth”), entretanto tal ferramenta é muito generalista, não abrangendo o

gerenciamento de falhas, área que a ferramenta a ser desenvolvida enfocará.

Atualmente, a empresa só descobre falhas na rede, as chamadas “quedas” de

internet, quando o próprio administrador da rede percebe ao utilizá-la ou quando os

clientes lhe reclamam.

Por outro lado, o estagiário percebeu que a empresa em estudo não

necessita de soluções em diversas áreas, pois se trata duma microempresa com

abrangência limitada e escopo bem definido (acesso à internet). Porém, o estagiário

reconhece que a inexistência de aplicação para o gerenciamento de falhas dos

dispositivos de rede é um erro que afeta a qualidade do serviço. A aplicação

desenvolvida terá grande importância para a empresa em estudo. Igualmente, o

projeto de desenvolvimento desta aplicação proporcionará aperfeiçoamento teórico-

prática ao estagiário, pois abrangerá programação web, conhecimentos de redes de

computadores, orientação a objetos e etc.

16

3 OBJETIVOS

3.1 OBJETIVO GERAL

Desenvolver uma ferramenta simples, barata e de fácil utilização,

para monitoramento de ativos em pequenas redes.

3.2 OBJETIVOS ESPECÍFICOS

I. Agregar valor aos negócios da empresa parceira;

II. Criar uma alternativa em contraponto ao complexo protocolo de

gerenciamento SNMP;

III. Utilizar a linguagem de programação PHP, com a aplicação dos

conceitos de orientação a objetos.

17

4 REFERENCIAL TEÓRICO

As redes de computadores estão muito presentes no cotidiano da

sociedade hodierna. Muitos serviços a utilizam como suporte, eliminando barreiras,

encurtando distâncias e incluindo mais e mais pessoas que antes eram excluídas.

Tanenbaum (p.2, 2003) simplesmente define redes de computadores como “um

conjunto de computadores autônomos interconectados por uma única tecnologia. [...]

Existem redes em muitos tamanhos, modelos e formas [...]”. Ainda segundo o autor,

as redes locais, como a vivenciada no estágio e modelo usado para o

desenvolvimento da aplicação, “são redes privadas contidas em um único edifício ou

campus universitário com até alguns quilômetros de extensão. [...] permitindo o

compartilhamento de recursos”.

No item 2 (Justificativa) foi abordado sobre a necessidade do

gerenciamento e monitoramento de redes, fazendo-se agora imperativo defini-lo

como o faz Kurose e Ross (2006) ao citar Saydam (1996) afirmando que o:

Gerenciamento de rede inclui o oferecimento, a integração e a coordenação dos elementos de hardware, software e humanos, para monitorar, testar, consultar, configurar analisar, avaliar e controlar os recursos da rede, e de elementos, para satisfazer às exigências operacionais, de desempenho e de qualidade de serviço em tempo real a um custo razoável.

Na elaboração da aplicação não se pretendeu abarcar toda a

extensão do gerenciamento de redes, tendo em vista o locus para onde o sistema foi

idealizado, bem como o aumento da complexidade ao estender e ampliar funções

que seriam desnecessárias. Tanto Tanenbaum como Kurose e Ross ao abordarem

sobre o gerenciamento de Redes, sempre é apresentado o protocolo SNMP como o

núcleo do gerenciamento, o motor dessa função. O sistema desenvolvido e

apresentado aqui não usa tal protocolo, pois iria justamente contra um dos adjetivos

do objetivo geral da aplicação, a simplicidade, Kurose e Ross (2006) explicam o

porquê:

“Ao contrário do que o nome SNMP (protocolo simples de gerenciamento de rede) possa sugerir, o gerenciamento de rede na internet é muito mais do que apenas um protocolo para transportar dados de gerenciamento entre uma entidade gerenciadora e seus agentes, e o SNMP passou a ser muito mais complexo do que a palavra ‘simples’ (o ‘S’) possa sugerir.”.

O sistema desenvolvido usa dum tripé que sustentam a sua principal

funcionalidade, o monitoramento. O tripé consiste no protocolo ICMP, da utilização

18

de sockets e da linguagem de programação PHP. O protocolo ICMP (Internet Control

Message Protocol), detalhado no RFC 792, informa erros referentes ao endereço IP

(Internet Protocol), sendo bem mais simples que o procotolo SNMP, porém não

dispõe de inúmeras funcionalidades que este possui. É um protocolo de controle,

composto por várias mensagens, sendo as principais, segundo Tanenbaum (2003),

as listadas abaixo:

Tipo de Mensagem Descrição

Destination unreachable Não foi possível entregar o pacote

Time exceeded O campo Time to live chegou a 0

Parameter problem Campo de cabeçalho inválido

Source Quench Pacote regulador

Redirect Ensina geografia a um roteador

Echo Pergunta a uma máquina se ela está ativa

Echo reply Sim, estou ativa

Timestamp request Igual a Echo, mas com timbre de hora

Timestamp reply Igual a Echo reply, mas com timbre de hora

A aplicação utiliza as mensagens “echo” e “echo reply” para

monitorar os ativos. Um dos grandes problemas aliados ao protocolo ICMP é o uso

deste como arma para ocasionar o ataque de DoS (Denial of Service). Kurose e

Ross (2006) explicam melhor:

Os atacantes, sabendo a faixa de endereços IP da sua rede, podem enviar facilmente datagramas IP para endereços da sua faixa. Tais datagramas são capazes de fazer todos os tipos de coisas desonestas [...] inundar servidores com milhares de pacotes ICMP [...] Como Administrador de rede, você pode, primeiro, tentar instalar um firewall entre sua rede e a Internet. [...] Um firewall pode estar configurado, por exemplo, para bloquear todos os pacotes de requisição de eco ICMP [...].

Assim, a aplicação para evitar a sobrecarga dos ativos monitorados,

somente enviar pacotes ICMP (em intervalos de 20 (vinte) segundos) quando

solicitados pelo usuário do sistema, acessando a página web específica para tal.

19

5 METODOLOGIA

Para o desenvolvimento do software de gerenciamento dos

ativos de rede foi utilizado o modelo de prototipação de software. O processo de

desenvolvimento compreendeu as fases de levantamento e análise de requisitos,

projeto, construção e testes, tendo como pano de fundo o modelo de prototipação.

A fase de levantamento e análise de requisitos consistiu em definir

os objetivos gerais do software, através de entrevistas com a empresa em estudo.

A fase de projeto buscou representar, usando a modelagem

orientada a objetos – UML, os aspectos da aplicação. A construção, com o uso do

software “Astah”, dos diagramas de classe, caso de uso, atividades e entidade-

relacionamento foi o grande foco desta fase.

A fase de construção subentende a construção do protótipo, visando

à avaliação do cliente acerca dos requisitos antes definidos, bem como compreende

a construção do software definitivo.

A fase de testes almeja refinar os requisitos do software antes

definidos, baseando-se para isso no protótipo desenvolvido ou no sistema definitivo.

Por utilizar o modelo de prototipação de software, houve constante

contato com o supervisor de campo, bem como os demais envolvidos, a fim de

apresentar os protótipos construídos.

20

6 CARACTERIZAÇÃO DA ORGANIZAÇÃO EM ESTUDO

A JM NET Banda Larga (J. M. Feitosa Informática – ME),

microempresa privada utilizada como laboratório para o desenvolvimento do projeto,

é pioneira na cidade de Piaçabuçu. Mesmo sendo pioneira e com ênfase em

tecnologia, não deixa de ser um negócio de família e amigos.

A empresa foi a primeira a trazer a internet banda larga para a

cidade e isso a transformou em vários aspectos, logo se percebe a importância da

empresa para a localidade. A empresa surgiu em 2006, com uma pequena estrutura,

que ainda se resume numa sala com o servidor de acesso à internet e os

equipamentos para distribuição da conexão (antenas e nós de rede). Atualmente a

empresa oferece como serviços o acesso à internet e a manutenção em

computadores.

A empresa tem como endereço o domicílio do proprietário, Jobson

Matos Feitosa, graduado com licenciatura em Informática, residente à Rua Santo

Antônio, nº 20, isso por ser uma microempresa com uma estrutura muito básica. Há,

porém, a sala, nas dependências da Prefeitura Municipal, onde se localiza o servidor

conectado à antena fixada na torre também localizada nas dependências do órgão

municipal. O contato à empresa pode ser feito por telefone (082 9188-3271) e

através de site (http://www.jmnetbandalarga.com).

A empresa vem em crescente expansão e atualmente oferece

acesso à internet em três cidades vizinhas na região do baixo São Francisco em

Alagoas: Piaçabuçu, Penedo e Feliz Deserto, sendo que em Piaçabuçu ainda

abrange seus povoados; conta com um sócio e três funcionários, dois destes

responsáveis pelo pronto atendimento nos problemas decorrentes da conexão à

internet, usando um automóvel (Fiat Uno) para prestar o pronto atendimento e um

funcionário responsável pelo departamento financeiro (pagamento, atrasos, boletos,

cadastro de clientes, etc.). Há uma frequente busca pela atualização tecnológica dos

ativos da empresa (roteadores, servidor, link de conexão, softwares de rede, etc.).

21

7 TECNOLOGIA

Para o desenvolvimento da aplicação serão usadas poucas

ferramentas. Optou-se, sempre que possível, usar ferramentas livres ou de código

aberto. Tal decisão reduz os custos do projeto e incentiva a liberdade econômica,

tecnológica e de expressão.

Na elaboração da modelagem do Banco de Dados, especificamente

o diagrama entidade-relacionamento, utilizou-se a ferramenta “BRModelo”, tal

ferramenta foi desenvolvida por Carlos Henrique Cândido, sob a orientação do Prof.

Dr. Ronaldo dos Santos Mello (UFSC), para fins de ensino da modelagem em banco

de dados1.

Como o projeto utiliza a orientação a objetos, fez-se necessário

utilizar um software para modelagem UML, usando o Astah2, antes chamado de

“JUDE”, sendo suficiente para o desenvolvimento do projeto sua versão gratuita,

chamada “Community”.

O projeto usará a linguagem de programação PHP, logo se optou

pela instalação da compilação de softwares livres XAMPP3, mantido pela

organização “Apache Friends”, que contém o servidor Apache, servidor PHP, o

administrador de banco de dados PHPMyAdmin e o banco de dados MySQL. O

XAMPP facilita a difícil tarefa de instalar o servidor Apache e seus componentes

(como o MySQL e PhpMyAdmin). O XAMPP é um software gratuito.

Por fim e não menos importante, para a melhor a elaboração dos

códigos usou-se do programa Notepad++, na versão 6.5, desenvolvido pelo

Notepad++ Team, distribuído sob a licença GNU General Public License4.

1 Disponível em: http://sis4.com/brModelo/Default.aspx

2 Disponível em: http://astah.net/

3 Disponível em: http://www.apachefriends.org/pt_br/xampp.html

4 Disponível em http://notepad-plus-plus.org

22

8 LEVANTAMENTO DE REQUISITOS

A empresa em estudo usa uma software terceirizado para

gerenciamento de clientes chamado “MyAuth” desenvolvido pela empresa TMSoft. O

“MyAuth” possui várias ferramentas, como o controle financeiro dos usuários (ex.:

geração de boletos), controle de acesso, controle da taxa de tráfego de acesso,

controle de banda de conexão e possui um amplo suporte oferecido pela empresa

desenvolvedora. Entretanto, o software acima descrito não apresenta nenhuma

opção para gerenciamento dos ativos da rede quanto a falhas. O proprietário usa

para tal um aplicativo, pago, para plataforma “Android” instalado em celular

(smartphone) de uso pessoal.

O sistema proposto busca realizar o gerenciamento e monitoramento

dos ativos da rede local. O gerenciamento consiste em realizar um inventário dos

ativos da empresa. Basicamente consiste em quatro módulos: Administração,

responsável por controlar os usuários que utilizam o sistema; Inventário, área onde

são controlados os ativos, fazendo-se a inserção, alteração, exclusão e listagem dos

mesmos; Monitoramento, onde está a principal função do sistema, podendo realizar

o monitoramento por ativos individualmente ou monitorar por ativos agrupados; e

Relatório, onde são listados os dados, como o registro das ocorrências, os acessos

por parte dos usuários ao sistema e mais informações.

Da fase de levantamento de requisitos, realizada através de

entrevistas com os membros da empresa-escola e da presença na rotina das

atividades dos funcionários. A fase de entrevistas foi importante pra entender a visão

dos usuários do sistema sobre o que ele necessitava fazer.

8.1 REQUISITOS FUNCIONAIS

O software deve manter um histórico das falhas detectadas;

Deve ser possível identificar quem inseriu determinado ativo

no sistema;

O software deve registrar as ações, quando e quem as fez;

O sistema deve verificar os dados inseridos quando do

cadastramento e das alterações, requerendo os dados

obrigatórios, como Nome, Local, IP e Status quando ativo e

23

Nome, Perfil, Login e Senha quando um usuário;

O sistema não pode permitir que um usuário com perfil

diferente de administrador realize operações de inserção,

alteração ou exclusão de ativos ou de outros usuários;

8.2 REQUISITOS NÃO FUNCIONAIS

O usuário deve ser capaz de acessar o software a partir de

qualquer dispositivo, desde computadores até smartphones,

conectado à internet;

A aplicação deve consumir pouca largura de banda;

O envio dos pacotes responsáveis pelo monitoramento não

deve obstruir a rede da empresa; e

O servidor não pode ficar exposto, em virtude da aplicação, a

ataques de invasão ou de negação de serviço;

24

9 DIAGRAMA DE CASO DE USO

25

10 DIAGRAMA DE CLASSE

26

10.1 DESCRIÇÃO DO DIAGRAMA DE CLASSE

O diagrama de classes elaborado apresenta as classes que compõem as ações

junto ao banco de Dados, são as classes Select, Update, Delete, Insert e Conexao, bem como as

classes que representam os ativos, onde se tem a class Ativo que é uma generalização das

classes Dispositivo, Noderede e Estacao e, por fim, tem-se a classe Usuario e a classe Grupo.

Tendo em vista o ambiente em que o sistema Pingo PHP foi desenvolvido, a

linguagem de programação PHP trabalha com páginas web, com variáves superglobais que

perduram seus valores entre as idas e vindas entre uma página e outra. Logo, quando da

implementação no código do diagrama de classes, optou-se por não se utilizar das classes

Usuario, Ativo, Dispositivo, Estacao, Noderede e Grupo. Explico. Imagine uma página de cadastro

de Estacao, ao preencher todos os campos necessários e clicar no botão “cadastrar” seria criada

uma instância da classe Estacao e os valores que foram inseridos neste objeto seriam

repassados para o Banco de Dados e todas as vezes que essas informações fossem

recuperadas necessário seria criar uma nova instância da classe Estacao para armazenar esses

valores. Com o uso das variáveis superglobais do PHP não se faz necessário a alocação de

memória necessária para a criação de um objeto, sem levar em conta que eliminamos muitas

linhas de código por não utilizar essas classes.

A classe Pingo é responsável por efetuar o monitoramento dos ativos. É uam

classe somente com métodos e contém a principal função do sistema Pingo PHP: a função

enviarSocket. O código fonte referente à classe pingo é uma adaptação do código elaborado por

Philip Birk-Jensen, disponível em < http://birk-jensen.dk/2010/09/php-ping/ >.

As classes Select, Insert, Update, Delete e Conexao são as classes que dão

suporte e funcionalidade ao Pingo PHP, provendo e organizando os dados da aplicação. A classe

Conexao possui uma relação de composição com as classes Select, Insert, Update e Delete, pois

aquela só existe enquanto estas existirem. Estas últimas quatro classes basicamente consistem

por atributos que armazenam as chamadas para as Stored Procedures no banco de dados,

enquanto seus métodos são responsáveis por passar os valores para dentro das procedures,

prepararem suas chamadas e executá-las no banco de dados.

27

11 DIAGRAMA DE SEQUÊNCIA

28

29

30

12 DIAGRAMA DE ATIVIDADES

31

13 DIAGRAMA DE ENTIDADE E RELACIONAMENTO

32

14 TELAS

Figura 1 - Login

33

Figura 2 - Login: Alerta p/ informar o login

34

Figura 3 - Login: Alerta p/ informar senha

35

Figura 4 - Login: Alerta sobre o tamanho da senha

36

Figura 5 - Login: Alerta sobre login com usuário não existentes no sistema

37

Figura 6 - Página Inicial

38

Figura 7 - Página Inicial: botão Monitoramento

39

Figura 8 - Página Inicial: botão Inventário

40

Figura 9 - Página Inicial: botão Administração

41

Figura 10 - Página Inicial: botão Relatório

42

Figura 11 - Inventário

43

Figura 12 - Inventário: botão Estações

44

Figura 13 - Inventário: botão Nós de rede

45

Figura 14 - Inventário: botão Dispositivos

46

Figura 15 - Inventário - Estações

47

Figura 16 - Inventário - Estações: botão Cadastrar Estação

48

Figura 17 - Inventário - Estações: botão Alterar estação

49

Figura 18 - Inventário - Estações: botão Excluir Estação

50

Figura 19 - Inventário - Estações - Cadastrar Estação: Form

51

Figura 20 - Inventário - Estações - Cadastrar Estação: alerta p/ informar nome

52

Figura 21 - Inventário - Estações - Cadastrar Estação: alerta p/ informar IP

53

Figura 22 - Inventário - Estações - Cadastrar Estação: alerta p/ informar Local

54

Figura 23 - Inventário - Estações - Cadastrar Estação: alerta p/ informar Status

55

Figura 24 - Inventário - Estações - Cadastrar Estação: alerta sobre cadastro com sucesso

56

Figura 25 - Inventário - Estações: listagem das estações cadastradas

57

Figura 26 - Inventário - Alterar Estação

58

Figura 27 - Inventário - Alterar Estação: informa que nenhuma estação foi selecionada

59

Figura 28 - Inventário - Alterar Estação: Form

60

Figura 29 - Inventário - Alterar Estação: alerta sobre estação alterada com sucesso

61

Figura 30 - Inventário - Estações - Excluir Estação

62

Figura 31 - Inventário - Estações - Excluir Estação: alerta informando que nenhuma estação foi selecionada para exclusão

63

Figura 32 - Inventário - Estações - Excluir Estação: alerta sobre exclusão com sucesso

64

Figura 33 - Inventário - Nós de Rede

65

Figura 34 - Inventário - Nós de Rede: botão Cadastrar Nó de rede

66

Figura 35 - Inventário - Nós de Rede: botão Alterar Nó de rede

67

Figura 36 - Inventário - Nós de Rede: botão Excluir Nó de rede

68

Figura 37 - Inventário - Nós de Rede - Cadastrar Nó de rede: Form

69

Figura 38 - Inventário - Nós de Rede - Cadastrar Nó de rede: alerta p/ usuário informar o nome do nó de rede

70

Figura 39 - Inventário - Nós de Rede - Cadastrar Nó de Rede: alerta p/ usuário informar o IP do nó de rede

71

Figura 40 - Inventário - Nós de Rede - Cadastrar Nó de rede: alerta p/ usuário informar o local do nó de rede

72

Figura 41 - Inventário - Nós de Rede - Cadastrar Nó de rede: alerta p/ usuário informar o status do nó de rede

73

Figura 42 - Inventário - Nós de rede - Cadastrar Nó de Rede: informa que nó de rede foi cadastrado com sucesso

74

Figura 43 - Inventário - Nós de rede - Listagem dos nós de rede cadastrados

75

Figura 44 - Inventário - Nós de Rede - Alterar Nó de rede

76

Figura 45 - Inventário - Nós de Rede - Alterar Nós de Rede: informa que nenhum nó de rede foi selecionado para ser alterado

77

Figura 46 - Inventário - Nó de Rede - Alterar Nó de Rede: Form

78

Figura 47 - Inventário - Nós de Rede - Alterar Nó de rede: alerta que nó de rede foi alterado com sucesso

79

Figura 48 - Inventário - Nós de Rede - Excluir Nó de Rede

80

Figura 49 - Inventário - Nós de rede - Excluir Nó de rede: alerta que nenhum nó de rede foi selecionado p/ ser excluído

81

Figura 50 - Inventário - Nós de Rede - Excluir Nó de Rede: alerta que nó de rede foi excluído com sucesso

82

Figura 51 - Monitoramento

83

Figura 52 - Monitoramento: botão Monitoramento

84

Figura 53 - Monitoramento: botão Últimas Ocorrências

85

Figura 54 - Monitoramento: botão Grupos

86

Figura 55 - Monitoramento - Monitoramento

87

Figura 56 - Monitoramento - Monitoramento: botão Monitorar Grupo

88

Figura 57 - Monitoramento - Monitoramento: botão Monitorar Estação

89

Figura 58 - Monitoramento - Monitoramento: botão Monitorar Nó de Rede

90

Figura 59 - Monitoramento - Monitoramento: botão Monitorar Dispositivo

91

Figura 60 - Monitoramento - Monitoramento - Monitoramento por Grupo

92

Figura 61 - Monitoramento - Monitoramento - Monitorar Grupo

93

Figura 62 - Monitoramento - Monitoramento - Monitoramento por Estação

94

Figura 63 - Monitoramento - Monitoramento - Monitorar Estação: informa que nenhuma estação

foi selecionada

95

Figura 64 - Monitoramento - Monitoramento - Monitorar Estação

96

Figura 65 - Monitoramento - Monitoramento - Monitoramento por Nó de rede

97

Figura 66 - Monitoramento - Monitoramento - Monitorar Nó de Rede: informa que nenhum nó

de rede foi selecionado

98

Figura 67 - Monitoramento - Monitoramento - Monitorar Nó de Rede

99

Figura 68 - Monitoramento - Monitoramento - Monitoramento por Dispositivo

100

Figura 69 - Monitoramento - Monitoramento - Monitorar Dispositivo: informa que nenhum

dispositivo foi selecionado

101

Figura 70 - Monitoramento - Monitoramento - Monitorar Dispositivo

102

Figura 71 - Monitoramento - Últimas Ocorrências

103

Figura 72 - Monitoramento - Grupos

104

Figura 73 - Monitoramento - Grupos: botão Cadastrar Grupo

105

Figura 74 - Monitoramento - Grupos: botão Alterar Grupo

106

Figura 75 - Monitoramento - Grupos: botão excluir Grupo

107

Figura 76 - Monitoramento - Grupos - Cadastrar Grupo

108

Figura 77 - Monitoramento - Grupos - Cadastrar Grupo: alerta ao usuário p/ informar nome do Grupo

109

Figura 78 - Monitoramento - Grupos - Cadastrar Grupo: alerta que grupo foi cadastrado com sucesso

110

Figura 79 - Monitoramento – Grupos – Alterar Grupo

111

Figura 80 - Monitoramento - Grupos - Alterar Grupo: informa que nenhum grupo foi selecionado p/ ser alterado

112

Figura 81 - Monitoramento - Grupos - Alterar Grupo: Form

113

Figura 82 - Monitoramento - Grupos - Alterar Grupo: alerta que grupo foi alterado com sucesso

114

Figura 83 - Monitoramento - Grupos - Excluir Grupo

115

Figura 84 - Monitoramento - Grupos - Excluir Grupo: alerta que grrupo foi excluído com sucesso

116

Figura 85 - Administração

117

Figura 86 - Administração: botão Cadastrar usuário

118

Figura 87 - Administração: botão Alterar Usuário

119

Figura 88 - Administração: botão Excluir Usuário

120

Figura 89 - Administração - Cadastrar Usuário: Form

121

Figura 90 - Administração - Cadastrar Usuário: alerta p/ usuário informar o nome do usuário a ser cadastrado

122

Figura 91 - Administração - Cadastrar Usuário: alerta p/ usuário informar o perfil do usuário a ser cadastrado

123

Figura 92 - Administração - Cadastrar Usuário: alerta p/ usuário informar o login do usuário a ser cadastrado

124

Figura 93 - Administração - Cadastrar Usuário: alerta p/ usuário informar a senha do usuário a ser cadastrado

125

Figura 94 - Administração - Cadastrar Usuário: alerta que usuário foi cadastrado com sucesso

126

Figura 95 - Administração - Alterar Usuário

127

Figura 96 - Administração - Alterar Usuário: Form

128

Figura 97 - Administração - Alterar Usuário: alerta que usuário foi alterado com sucesso

129

Figura 98 - Administração - Excluir Usuário

130

Figura 99 - Administração - Excluir Usuário: alerta que usuário foi excluído com sucesso

131

Figura 100 - Administração - Meus Dados: Form

132

Figura 101 - Relatório

133

Figura 102 - Relatório: botão Relatório de Ocorrências

134

Figura 103 - Relatório: botão Relatório de Usuário

135

Figura 104 - Relatório: botão Relatório de Ativo

136

Figura 105 - Relatório - Relatório de Ocorrências

137

Figura 106 - Relatório - Relatório de Ocorrências - Ocorrências por Estação

138

Figura 107 - Relatório - Relatório de Ocorrências - Ocorrências por Nó de Rede

139

Figura 108 - Relatório - Relatório de Ocorrências - Ocorrências por Dispositivo

140

Figura 109 - Relatório - Relatório de Usuário

141

Figura 110 - Relatório - Relatório de Usuário - Acessos por Data

142

Figura 111 - Relatório - Relatório de Usuário - Acessos por Usuário

143

Figura 112 - Relatório - Relatório de Usuário - Ações por Data

144

Figura 113 - Relatório - Relatório de Usuário - Ações por Usuário

145

Figura 114 - Relatório - Relatório de Ativo

146

15 CÓDIGO FONTE

15.1 COMANDOS SQL

15.1.1 Criação das Tabelas

CREATE TABLE usuario (

idUsuario int(4) PRIMARY KEY NOT NULL AUTO_INCREMENT,

Email varchar(50) NOT NULL,

Nome varchar(50) NOT NULL,

Login varchar(15) NOT NULL,

Senha varchar(15) NOT NULL,

Perfil varchar(30) NOT NULL,

Telefone varchar(15) NOT NULL

)

ENGINE = InnoDB;

CREATE TABLE log (

id int(4) PRIMARY KEY NOT NULL AUTO_INCREMENT,

Usuario int(4) NOT NULL DEFAULT 1 ,

Evento varchar(30) NOT NULL,

DataHora varchar(20) NOT NULL,

INDEX (Usuario),

FOREIGN KEY (Usuario) REFERENCES usuario (idUsuario) ON UPDATE

CASCADE ON DELETE CASCADE

)

ENGINE = InnoDB;

CREATE TABLE grupo (

id int(4) PRIMARY KEY NOT NULL AUTO_INCREMENT,

Nome varchar(30) NOT NULL,

Usuario int(4) NULL DEFAULT 1,

INDEX (Usuario),

FOREIGN KEY (Usuario) REFERENCES usuario (idUsuario) ON UPDATE

147

CASCADE ON DELETE SET NULL

)

ENGINE = InnoDB;

CREATE TABLE estacao (

id int(4) PRIMARY KEY NOT NULL AUTO_INCREMENT,

IP varchar(15) NOT NULL,

Nome varchar(30) NOT NULL,

Local varchar(30) NOT NULL,

SO varchar(30) NULL,

HD varchar(15) NULL,

CPU varchar(15) NULL,

RAM varchar(15) NULL,

Status varchar(15) NULL,

Usuario int(4) NULL DEFAULT 1,

Grupo int(4) NULL DEFAULT 1,

INDEX (Usuario),

INDEX (Grupo),

FOREIGN KEY (Usuario) REFERENCES usuario (idUsuario) ON UPDATE

CASCADE ON DELETE SET NULL,

FOREIGN KEY (Grupo) REFERENCES grupo (id) ON UPDATE CASCADE

ON DELETE SET NULL

)

ENGINE = InnoDB;

CREATE TABLE OcorrenciaEstacao (

id int(4) PRIMARY KEY NOT NULL AUTO_INCREMENT,

Estacao int(4) NOT NULL,

DataHora varchar(20) NOT NULL,

INDEX (Estacao),

FOREIGN KEY(Estacao) REFERENCES estacao (id) ON UPDATE

CASCADE ON DELETE CASCADE

)

ENGINE = InnoDB;

CREATE TABLE norede (

148

id int(4) PRIMARY KEY NOT NULL AUTO_INCREMENT,

IP varchar(15) NOT NULL,

Nome varchar(30) NOT NULL,

Local varchar(30) NOT NULL,

Tipo varchar(30) NULL,

Marca varchar(30) NULL,

Modelo varchar(15) NULL,

Freq varchar(15) NULL,

DBI varchar(15) NULL,

Status varchar(15) NULL,

Usuario int(4) NULL DEFAULT 1,

Grupo int(4) NULL DEFAULT 1,

INDEX (Usuario),

INDEX (Grupo),

FOREIGN KEY (Usuario) REFERENCES usuario (idUsuario) ON UPDATE

CASCADE ON DELETE SET NULL,

FOREIGN KEY (Grupo) REFERENCES grupo (id) ON UPDATE CASCADE

ON DELETE SET NULL

)

ENGINE = InnoDB;

CREATE TABLE OcorrenciaNoRede (

id int(4) PRIMARY KEY NOT NULL AUTO_INCREMENT,

Norede int(4) NOT NULL,

DataHora varchar(20),

INDEX (Norede),

FOREIGN KEY (Norede) REFERENCES norede (id) ON UPDATE CASCADE

ON DELETE CASCADE

)

ENGINE = InnoDB;

CREATE TABLE dispositivo (

id int(4) PRIMARY KEY NOT NULL AUTO_INCREMENT,

IP varchar(15) NOT NULL,

Nome varchar(30) NOT NULL,

Local varchar(30) NOT NULL,

149

Tipo varchar(30) NULL,

Status varchar(15) NULL,

Usuario int(4) NULL DEFAULT 1,

Grupo int(4) NULL DEFAULT 1,

INDEX (Usuario),

INDEX (Grupo),

FOREIGN KEY (Usuario) REFERENCES usuario (idUsuario) ON UPDATE

CASCADE ON DELETE SET NULL,

FOREIGN KEY (Grupo) REFERENCES grupo (id) ON UPDATE CASCADE

ON DELETE SET NULL

)

ENGINE = InnoDB;

CREATE TABLE OcorrenciaDispositivo (

id int(4) PRIMARY KEY NOT NULL AUTO_INCREMENT,

Dispositivo int(4) NOT NULL,

DataHora varchar(20) NOT NULL,

INDEX (Dispositivo),

FOREIGN KEY (Dispositivo) REFERENCES dispositivo (id) ON UPDATE

CASCADE ON DELETE CASCADE

)

ENGINE = InnoDB;

15.1.2 Criação das Stored Procedures (Procedimentos Armazenados)

15.1.2.1 Procedimentos “inserir”

DELIMITER //

CREATE PROCEDURE inserirEstacao(param_ip varchar(15),param_nome

varchar(30),param_local varchar(30),param_so varchar(30),param_hd varchar(15),

param_cpu varchar(15),param_ram varchar(15),param_status varchar(15),

param_usuario int(4))

MODIFIES SQL DATA

BEGIN

150

INSERT INTO estacao (IP,Nome,Local,SO,HD,CPU,RAM,Status,Usuario)

VALUES

(param_ip,param_nome,param_local,param_so,param_hd,param_cpu,param_ram,param_status,

param_usuario);

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE inserirNoderede(param_ip varchar(15),param_nome

varchar(30),param_local varchar(30),param_tipo varchar(30),param_marca varchar(30),

param_modelo varchar(15),param_freq varchar(15),param_dbi

varchar(15),param_status varchar(15), param_usuario int(4))

MODIFIES SQL DATA

BEGIN

INSERT INTO norede

(IP,Nome,Local,Tipo,Marca,Modelo,Freq,DBI,Status,Usuario)

VALUES

(param_ip,param_nome,param_local,param_tipo,param_marca,param_modelo,param_freq,param_db

i,param_status, param_usuario);

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE inserirDispositivo(param_ip varchar(15),param_nome

varchar(30),param_local varchar(30),param_status varchar(15),

param_tipo varchar(30), param_usuario int(4))

MODIFIES SQL DATA

BEGIN

INSERT INTO dispositivo (IP,Nome,Local,Status,Tipo,Usuario)

VALUES

(param_ip,param_nome,param_local,param_status,param_tipo,param_usuario);

151

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE inserirGrupo(param_nome varchar(30),param_usuario

int(4))

MODIFIES SQL DATA

BEGIN

INSERT INTO grupo (Nome,Usuario)

VALUES (param_nome,param_usuario);

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE inserirLog(param_usuario int(4),param_evento

varchar(30),param_datahora varchar(20))

MODIFIES SQL DATA

BEGIN

INSERT INTO log (Usuario,Evento,DataHora)

VALUES (param_usuario,param_evento,param_datahora);

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE inserirOcorrenciaEstacao(param_id

int(4),param_datahora varchar(20))

MODIFIES SQL DATA

BEGIN

152

INSERT INTO ocorrenciaestacao (Estacao,DataHora)

VALUES (param_id,param_datahora);

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE inserirOcorrenciaNoderede(param_id

int(4),param_datahora varchar(20))

MODIFIES SQL DATA

BEGIN

INSERT INTO ocorrencianorede (Norede,DataHora)

VALUES (param_id,param_datahora);

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE inserirOcorrenciaDispositivo(param_id

int(4),param_datahora varchar(20))

MODIFIES SQL DATA

BEGIN

INSERT INTO ocorrenciadispositivo (Dispositivo,DataHora)

VALUES (param_id,param_datahora);

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE inserirUsuario(param_email varchar(50),param_nome

varchar(50),param_login varchar(15),param_senha varchar(15),param_perfil varchar(30),

param_telefone varchar(15))

MODIFIES SQL DATA

BEGIN

INSERT INTO usuario (Email, Nome, Login, Senha, Perfil, Telefone)

VALUES (param_email, param_nome, param_login,

param_senha, param_perfil, param_telefone);

END //

DELIMITER ;

153

15.1.2.2 Procedimentos “excluir”

DELIMITER //

CREATE PROCEDURE excluirUsuario (param_id int(4))

MODIFIES SQL DATA

BEGIN

DELETE FROM usuario WHERE idUsuario = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE excluirEstacao (param_id int(4))

MODIFIES SQL DATA

BEGIN

DELETE FROM estacao WHERE id = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE excluirNoderede (param_id int(4))

MODIFIES SQL DATA

BEGIN

DELETE FROM norede WHERE id = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE excluirDispositivo (param_id int(4))

MODIFIES SQL DATA

BEGIN

DELETE FROM dispositivo WHERE id = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE excluirGrupo (param_id int(4))

MODIFIES SQL DATA

BEGIN

DELETE FROM grupo WHERE id = param_id;

END //

154

DELIMITER ;

15.1.2.3 Procedimentos “alterar”

DELIMITER //

CREATE PROCEDURE alterarEstacao(param_id int(4), param_ip

varchar(15),param_nome varchar(30),param_local varchar(30),param_so varchar(30),param_hd

varchar(15),

param_cpu varchar(15),param_ram varchar(15),param_status varchar(15))

MODIFIES SQL DATA

BEGIN

UPDATE estacao SET IP = param_ip, Nome = param_nome, Local = param_local,

SO = param_so, HD = param_hd, CPU = param_cpu, RAM = param_ram,

Status = param_status WHERE id = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE alterarDispositivo(param_id int(4),param_ip

varchar(15),param_nome varchar(30),param_local varchar(30),param_status varchar(15),

param_tipo varchar(30))

MODIFIES SQL DATA

BEGIN

UPDATE dispositivo SET IP = param_ip, Nome = param_nome, Local =

param_local, Status = param_status, Tipo = param_tipo WHERE id = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE alterarNoderede(param_id int(4),param_ip

varchar(15),param_nome varchar(30),param_local varchar(30),

param_marca varchar(30),param_modelo varchar(15),param_freq

varchar(15),param_dbi varchar(15),param_status varchar(15),param_tipo varchar(30))

MODIFIES SQL DATA

BEGIN

UPDATE norede SET IP = param_ip, Nome = param_nome, Local = param_local,

Marca = param_marca, Modelo = param_modelo,

Freq = param_freq, DBI = param_dbi, Status = param_status, Tipo = param_tipo

WHERE id = param_id;

END //

155

DELIMITER ;

DELIMITER //

CREATE PROCEDURE alterarGrupo(param_nome varchar(30),param_id int(4))

MODIFIES SQL DATA

BEGIN

UPDATE grupo SET Nome = param_nome WHERE id = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE alterarEstacaoGrupo(param_idgrupo

int(4),param_idestacao int(4))

MODIFIES SQL DATA

BEGIN

UPDATE estacao SET Grupo = param_idgrupo WHERE id = param_idestacao;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE alterarNoderedeGrupo(param_idgrupo

int(4),param_idnoderede int(4))

MODIFIES SQL DATA

BEGIN

UPDATE norede SET Grupo = param_idgrupo WHERE id = param_idnoderede;

156

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE alterarDispositivoGrupo(param_idgrupo

int(4),param_iddispositivo int(4))

MODIFIES SQL DATA

BEGIN

UPDATE dispositivo SET Grupo = param_idgrupo WHERE id =

param_iddispositivo;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE alterarEstacaoSemGrupo()

MODIFIES SQL DATA

BEGIN

UPDATE estacao SET Grupo = 1 WHERE Grupo IS NULL;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE alterarNoderedeSemGrupo()

MODIFIES SQL DATA

BEGIN

157

UPDATE norede SET Grupo = 1 WHERE Grupo IS NULL;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE alterarDispositivoSemGrupo()

MODIFIES SQL DATA

BEGIN

UPDATE dispositivo SET Grupo = 1 WHERE Grupo IS NULL;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE alterarUsuario(param_id int(4), param_email

varchar(50),param_nome varchar(50),param_perfil varchar(30), param_telefone varchar(15))

MODIFIES SQL DATA

BEGIN

UPDATE usuario SET Email = param_email, Nome = param_nome, Perfil =

param_perfil, Telefone = param_telefone WHERE idUsuario = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE alterarUsuarioLogado(param_id int(4), param_email

varchar(50),param_nome varchar(50), param_login varchar(15), param_senha varchar(15),

158

param_perfil varchar(30), param_telefone varchar(15))

MODIFIES SQL DATA

BEGIN

UPDATE usuario SET Email = param_email, Nome = param_nome, Login =

param_login, Senha = param_senha, Perfil = param_perfil, Telefone = param_telefone

WHERE idUsuario = param_id;

END //

DELIMITER ;

15.1.2.4 Procedimentos “pesquisar”

DELIMITER //

CREATE PROCEDURE pesquisarUsuarioLogin(param_login varchar(15),

param_senha varchar(14))

READS SQL DATA

BEGIN

SELECT * FROM usuario WHERE Login = param_login AND

Senha = param_senha LIMIT 1;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarUsuarioTodos()

READS SQL DATA

BEGIN

SELECT * FROM usuario;

END //

DELIMITER ;

DELIMITER //

159

CREATE PROCEDURE pesquisarUsuarioTodosExceto(param_id int(4))

READS SQL DATA

BEGIN

SELECT * FROM usuario WHERE idUsuario <> param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarUsuarioID(param_id int(4))

READS SQL DATA

BEGIN

SELECT * FROM usuario WHERE idUsuario = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarEstacaoID(param_id int(4))

READS SQL DATA

BEGIN

SELECT * FROM estacao WHERE id = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarNoderedeID(param_id int(4))

160

READS SQL DATA

BEGIN

SELECT * FROM norede WHERE id = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarDispositivoID(param_id int(4))

READS SQL DATA

BEGIN

SELECT * FROM dispositivo WHERE id = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarEstacaoTodos()

READS SQL DATA

BEGIN

SELECT * FROM estacao;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarNoderedeTodos()

READS SQL DATA

161

BEGIN

SELECT * FROM norede;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarDispositivoTodos()

READS SQL DATA

BEGIN

SELECT * FROM dispositivo;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarEstacaoLimite()

READS SQL DATA

BEGIN

SELECT * FROM estacao LIMIT 3;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarNoderedeLimite()

READS SQL DATA

BEGIN

162

SELECT * FROM norede LIMIT 3;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarDispositivoLimite()

READS SQL DATA

BEGIN

SELECT * FROM dispositivo LIMIT 3;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarGrupoTodos()

READS SQL DATA

BEGIN

SELECT * FROM grupo;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarGrupoUltimo()

READS SQL DATA

BEGIN

SELECT * FROM grupo ORDER BY id DESC LIMIT 1;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarGrupoID(param_id int(4))

READS SQL DATA

BEGIN

163

SELECT * FROM grupo WHERE id = param_id LIMIT 1;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarEstacaoGrupo(param_id int(4))

READS SQL DATA

BEGIN

SELECT id, Nome, IP, Local, Status FROM estacao WHERE Grupo = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarIDEstacaoGrupo(param_id int(4))

READS SQL DATA

BEGIN

SELECT estacao.id FROM estacao INNER JOIN grupo ON Grupo = grupo.id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarNoderedeGrupo(param_id int(4))

READS SQL DATA

BEGIN

SELECT id, Nome, IP, Local, Status FROM norede WHERE Grupo = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarDispositivoGrupo(param_id int(4))

READS SQL DATA

BEGIN

SELECT id, Nome, IP, Local, Status FROM dispositivo WHERE Grupo = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarQuantOcorrenciaEstacao(param_idestacao

int(4),param_datahora varchar(20))

READS SQL DATA

164

BEGIN

SELECT COUNT(id) FROM ocorrenciaestacao WHERE Estacao =

param_idestacao AND DataHora LIKE CONCAT('%',param_datahora,'%');

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarQuantOcorrenciaNoderede(param_idnorede

int(4),param_datahora varchar(20))

READS SQL DATA

BEGIN

SELECT COUNT(id) FROM ocorrencianorede WHERE Norede = param_idnorede

AND DataHora LIKE CONCAT('%',param_datahora,'%');

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE

pesquisarQuantOcorrenciaDispositivo(param_iddispositivo int(4),param_datahora varchar(20))

READS SQL DATA

BEGIN

SELECT COUNT(id) FROM ocorrenciadispositivo WHERE Dispositivo =

param_iddispositivo AND DataHora LIKE CONCAT('%',param_datahora,'%');

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarQuantUsuario()

READS SQL DATA

BEGIN

SELECT COUNT(*) FROM usuario;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarQuantAdministrador()

READS SQL DATA

BEGIN

165

SELECT COUNT(*) FROM usuario WHERE Perfil = "Administrador";

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarQuantOperador()

READS SQL DATA

BEGIN

SELECT COUNT(*) FROM usuario WHERE Perfil = "Operador";

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarAcoesData(param_datahora varchar(20))

READS SQL DATA

BEGIN

SELECT log.DataHora, log.Evento,usuario.Nome FROM log

INNER JOIN usuario ON log.Usuario = usuario.idUsuario WHERE DataHora LIKE

CONCAT('%',param_datahora,'%') ORDER BY DataHora DESC;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarAcoesUsuario(param_id int(4))

READS SQL DATA

BEGIN

SELECT usuario.Nome,log.Evento,log.DataHora FROM log

INNER JOIN usuario ON log.usuario = usuario.idUsuario WHERE log.Usuario =

param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarAcessoUsuario(param_id int(4))

READS SQL DATA

BEGIN

SELECT usuario.Nome,log.Evento,log.DataHora FROM log

INNER JOIN usuario ON log.usuario = usuario.idUsuario WHERE log.Usuario =

param_id AND log.Evento = 'Acessar o Sistema';

END //

166

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarAcessoData(param_datahora varchar(20))

READS SQL DATA

BEGIN

SELECT log.DataHora, log.Evento,usuario.Nome FROM log

INNER JOIN usuario ON log.Usuario = usuario.idUsuario WHERE DataHora LIKE

CONCAT('%',param_datahora,'%') AND log.Evento = 'Acessar o Sistema' ORDER BY DataHora

DESC;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarQuantEstacao()

READS SQL DATA

BEGIN

SELECT COUNT(*) FROM estacao;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarQuantNoderede()

READS SQL DATA

BEGIN

SELECT COUNT(*) FROM norede;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarQuantDispositivo()

READS SQL DATA

BEGIN

SELECT COUNT(*) FROM dispositivo;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarEstacoesUsuario(param_id int(4))

READS SQL DATA

167

BEGIN

SELECT estacao.Nome,estacao.IP,estacao.Local,usuario.Nome FROM estacao

INNER JOIN usuario ON estacao.Usuario = usuario.idUsuario WHERE estacao.Usuario = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarNosderedeUsuario(param_id int(4))

READS SQL DATA

BEGIN

SELECT norede.Nome,norede.IP,norede.Local,usuario.Nome FROM norede

INNER JOIN usuario ON norede.Usuario = usuario.idUsuario WHERE norede.Usuario = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarDispositivosUsuario(param_id int(4))

READS SQL DATA

BEGIN

SELECT dispositivo.Nome,dispositivo.IP,dispositivo.Local,usuario.Nome FROM

dispositivo

INNER JOIN usuario ON dispositivo.Usuario = usuario.idUsuario WHERE

dispositivo.Usuario = param_id;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarUltimasOcorrEstacao()

READS SQL DATA

BEGIN

SELECT

ocorrenciaestacao.Estacao,ocorrenciaestacao.DataHora,estacao.Nome,estacao.IP,estacao.Local

FROM ocorrenciaestacao

INNER JOIN estacao ON ocorrenciaestacao.Estacao = estacao.id ORDER BY

ocorrenciaestacao.DataHora DESC LIMIT 7;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarUltimasOcorrDispositivo()

168

READS SQL DATA

BEGIN

SELECT

ocorrenciadispositivo.Dispositivo,ocorrenciadispositivo.DataHora,dispositivo.Nome,dispositivo.IP,dispo

sitivo.Local FROM ocorrenciadispositivo

INNER JOIN dispositivo ON ocorrenciadispositivo.Dispositivo = Dispositivo.id

ORDER BY ocorrenciadispositivo.DataHora DESC LIMIT 7;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarUltimasOcorrNoderede()

READS SQL DATA

BEGIN

SELECT

ocorrencianorede.Norede,ocorrencianorede.DataHora,norede.Nome,norede.IP,norede.Local FROM

ocorrencianorede

INNER JOIN norede ON ocorrencianorede.Norede = Norede.id ORDER BY

ocorrencianorede.DataHora DESC LIMIT 7;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarOcorrEstacao()

READS SQL DATA

BEGIN

SELECT

ocorrenciaestacao.Estacao,ocorrenciaestacao.DataHora,estacao.Nome,estacao.IP,estacao.Local

FROM ocorrenciaestacao

INNER JOIN estacao ON ocorrenciaestacao.Estacao = estacao.id ORDER BY

ocorrenciaestacao.DataHora DESC;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarOcorrDispositivo()

READS SQL DATA

BEGIN

SELECT

ocorrenciadispositivo.Dispositivo,ocorrenciadispositivo.DataHora,dispositivo.Nome,dispositivo.IP,dispo

169

sitivo.Local FROM ocorrenciadispositivo

INNER JOIN dispositivo ON ocorrenciadispositivo.Dispositivo = Dispositivo.id

ORDER BY ocorrenciadispositivo.DataHora DESC;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarOcorrNoderede()

READS SQL DATA

BEGIN

SELECT

ocorrencianorede.Norede,ocorrencianorede.DataHora,norede.Nome,norede.IP,norede.Local FROM

ocorrencianorede

INNER JOIN norede ON ocorrencianorede.Norede = Norede.id ORDER BY

ocorrencianorede.DataHora DESC;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarUltimoAcesso(param_id int(4))

READS SQL DATA

BEGIN

SELECT log.DataHora FROM log WHERE log.Usuario = param_id AND

log.Evento = 'Acessar o Sistema' ORDER BY log.DataHora DESC LIMIT 1;

END //

DELIMITER ;

DELIMITER //

CREATE PROCEDURE pesquisarTodosLog()

READS SQL DATA

BEGIN

SELECT log.DataHora,log.Evento,usuario.Nome FROM log INNER JOIN usuario

ON log.Usuario = usuario.idUsuario ORDER BY log.DataHora DESC;

END //

DELIMITER ;

170

15.1.3 Inserções

INSERT INTO usuario (Email,Nome,Login,Senha,Perfil,Telefone) VALUES

('[email protected]','ROOT','root','rootroot','Administrador','12345678');

INSERT INTO grupo (Nome,Usuario) VALUES ('Padrão',1);

15.2 CÓDIGO HTML, CSS E PHP

15.2.1 CRUD

15.2.1.1 Arquivo conexao.class.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento de Sistemas -

Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes - 2013

@Classe que implementa, através do recurso de PDO (PHP Data Objects), a

conexão com o BD

*/

class Conexao

{

//public $dsn =

'mysql:host=localhost;port=3306;dbname=pingophp';

public $dsn =

'mysql:host=mysql.qlix.com.br;port=3306;dbname=pingophp';

public $usuario = 'pingophp';

public $senha = 'ellipsis';

public $opcoes =

array(PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES

utf8',PDO::ATTR_PERSISTENT=>true,PDO::ATTR_CASE=>PDO::CASE_LOWER);

}

171

15.2.1.2 Página cadastrar.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento de Sistemas -

Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes - 2013

@O switch irá verificar qual o tipo de formulário (cadastro) está sendo passado.

Definido o tipo de cadastro, cria-se um objeto Insert, chama-se o método adequado

(informando os valores a serem inseridos no BD). Feita o cadastro, é hora de

registrar isso na tabela de logs do sistema, informando o usuário q fez o cadastro

(id), o tipo de cadastro (tipoform) e quando ele fez tal cadastro (date()). Finalmente, é

informando (via 'alert') que o cadsstro foi realizado e é feito um redirecionamento

*/

session_start(); //Pega os valores personalizados do usuário

atual.

switch ($_POST['tipoform'])

{

case "Cadastrar Usuario":

{

require_once("inserir.class.php");

$insert = new Insert();

$insert-

>inserirUsuario($_POST['email'],$_POST['nome'],$_POST['login'],$_POST['senha'],$

_POST['perfil'],$_POST['telefone']);

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

echo("<script type='text/javascript'>

alert('Usu\u00e1rio cadastrado com sucesso!');

172

location.href='../administracao';</script>");

break;

}

case "Cadastrar Estacao":

{

require_once("inserir.class.php");

$insert = new Insert();

$insert-

>inserirEstacao($_POST['ip'],$_POST['nome'],$_POST['local'],$_POST['so'],$_POST

['hd'],$_POST['cpu'],$_POST['ram'],$_POST['status'],$_SESSION['id']);

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

echo("<script type='text/javascript'>

alert('Esta\u00e7\u00e3o cadastrada com sucesso!');

location.href='../inventario/estacoes.php';</script>");

break;

}

case "Cadastrar No de Rede":

{

require_once("inserir.class.php");

$insert = new Insert();

$insert-

>inserirNodorede($_POST['ip'],$_POST['nome'],$_POST['local'],$_POST['marca'],$_

POST['modelo'],$_POST['frequencia'],$_POST['dbi'],$_POST['status'],$_POST['tipon

173

o'],$_SESSION['id']);

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

echo("<script type='text/javascript'> alert('N\u00f3

de Rede cadastrado com sucesso!');

location.href='../inventario/noderede.php';</script>");

break;

}

case "Cadastrar Dispositivo":

{

require_once("inserir.class.php");

$insert = new Insert();

$insert-

>inserirDispositivo($_POST['ip'],$_POST['nome'],$_POST['local'],$_POST['status'],$_

POST['tipodispositivo'],$_SESSION['id']);

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

echo("<script type='text/javascript'>

alert('Dispositivo cadastrado com sucesso!');

location.href='../inventario/dispositivos.php';</script>");

break;

}

case "Cadastrar Grupo" :

{

174

if($_POST['nome'] != "")

{

require_once("inserir.class.php");

$insert = new Insert();

$insert-

>inserirGrupo($_POST['nome'],$_SESSION['id']);

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

require_once("pesquisar.class.php");

$select = new Select();

$select->pesquisarGrupoUltimo();

//Verifica se o último Grupo Cadastrado é

igual ao grupo informado pelo usuário - Ter certeza que será inserido os ativos no

grupo correto.

if ((string) $select->registro->nome ===

$_POST['nome'])

{

require_once("alterar.class.php");

$update = new Update();

//Alterando o 'id' do grupo nos

dispositivos que foram selecionadas no checkbox

if(isset($_POST['iddispositivo']))

{

for($index = 0; $index <

count($_POST['iddispositivo']); $index++)

175

{

$update-

>alterarDispositivoGrupo($select->registro->id, $_POST['iddispositivo'][$index]);

}

}

//Alterando o 'id' do grupo nas

estações que foram selecionadas no checkbox

if(isset($_POST['idestacao']))

{

for($index = 0; $index <

count($_POST['idestacao']); $index++)

{

$update-

>alterarEstacaoGrupo($select->registro->id, $_POST['idestacao'][$index]);

}

}

//Alterando o 'id' do grupo nos nós de

rede que foram selecionadas no checkbox

if(isset($_POST['idnoderede']))

{

for($index = 0; $index <

count($_POST['idnoderede']); $index++)

{

$update-

>alterarNoderedeGrupo($select->registro->id, $_POST['idnoderede'][$index]);

}

}

echo("<script type='text/javascript'>

alert('Grupo cadastrado com sucesso!');

location.href='../monitoramento/grupos.php';</script>");

}

176

else

{

echo("<script type='text/javascript'>

alert('Grupo n\u00e3o cadastrado!');

location.href='../monitoramento/grupos.php';</script>");

}

}

else

{

echo("<script type='text/javascript'>

alert('Informe o nome do Grupo!');

location.href='../monitoramento/grupos.php';</script>");

}

break;

}

}

15.2.1.3 Arquivo inserir.class.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento de Sistemas -

Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes - 2013

@Classe responsável por inserir registros no BD. Os atributos contém a chamada

específica p/ a Procedure específica. Já os métodos são os responsáveis por

estabelecer a conexão com o BD, criar as PDO (Php Data Object), preparam os

comandos SQL, trocar os valores (bindParam) e executam a chamada p/ as

Procedures p/ inclusão no BD.

*/

class Insert

177

{

public $resposta; //Armazena uma possível resposta - não

vai ser muito usado.

//=======================================ATRIBUTOS

sqlInsert...=============================================

//Os atributos basicamente contêm as chamadas ('CALL')

para a inserção desejada, chamada essa feita para a procedure armazenada no BD.

//A nomenclatura usada nos atributos é sempre

'sqlInsertAlgumaCoisa'.

private $sqlInsertEstacao = "CALL

inserirEstacao(:IP,:Nome,:Local,:SO,:HD,:CPU,:RAM,:Status,:Usuario)";

private $sqlInsertNoderede = "CALL

inserirNoderede(:IP,:Nome,:Local,:Tipo,:Marca,:Modelo,:Freq,:DBI,:Status,:Usuario)";

private $sqlInsertDispositivo = "CALL

inserirDispositivo(:IP,:Nome,:Local,:Status,:Tipo,:Usuario)";

private $sqlInsertGrupo = "CALL

inserirGrupo(:Nome,:Usuario)";

private $sqlInsertLog = "CALL

inserirLog(:Usuario,:Evento,:DataHora)";

private $sqlInsertOcorrenciaEstacao = "CALL

inserirOcorrenciaEstacao(:ID,:DataHora)";

private $sqlInsertOcorrenciaNoderede = "CALL

inserirOcorrenciaNoderede(:ID,:DataHora)";

private $sqlInsertOcorrenciaDispositivo = "CALL

178

inserirOcorrenciaDispositivo(:ID,:DataHora)";

private $sqlInsertUsuario = "CALL

inserirUsuario(:Email,:Nome,:Login,:Senha,:Perfil,:Telefone)";

//=======================================MÉTODOS

inserir...===============================================

//Os métodos basicamente criam uma conexão, criam

uma PDO, preparam a chamada, passam os valores a serem postos no BD dentro

do comando da

//chamada da procedure e fazem a chamada p/ a

Procedure desejada.

//A nomenclatura usada nos métodos é

'inserirAlgumaCoisa'

public function inserirUsuario($email,$nome,$login,

$senha,$perfil,$telefone)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlInsertUsuario);

$st->bindParam(':Email',$email);

$st->bindParam(':Nome',$nome);

$st->bindParam(':Login',$login);

$st->bindParam(':Senha',$senha);

179

$st->bindParam(':Perfil',$perfil);

$st->bindParam(':Telefone',$telefone);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function inserirEstacao($ip, $nome, $local, $so,

$hd, $processador, $ram, $status, $usuario)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlInsertEstacao);

$st->bindParam(':IP',$ip);

$st->bindParam(':Nome',$nome);

$st->bindParam(':Local',$local);

$st->bindParam(':SO',$so);

$st->bindParam(':HD',$hd);

$st->bindParam(':CPU',$processador);

$st->bindParam(':RAM',$ram);

$st->bindParam(':Status',$status);

180

$st->bindParam(':Usuario',$usuario);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function inserirNodorede($ip, $nome, $local,

$marca, $modelo, $frequencia, $dbi, $status,$tipo, $usuario)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlInsertNoderede);

$st->bindParam(':IP',$ip);

$st->bindParam(':Nome',$nome);

$st->bindParam(':Local',$local);

$st->bindParam(':Marca',$marca);

$st->bindParam(':Modelo',$modelo);

$st->bindParam(':Freq',$frequencia);

$st->bindParam(':DBI',$dbi);

$st->bindParam(':Status',$status);

$st->bindParam(':Tipo',$tipo);

181

$st->bindParam(':Usuario',$usuario);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function

inserirDispositivo($ip,$nome,$local,$status,$tipo,$usuario)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlInsertDispositivo);

$st->bindParam(':IP',$ip);

$st->bindParam(':Nome',$nome);

$st->bindParam(':Local',$local);

$st->bindParam(':Status',$status);

$st->bindParam(':Tipo',$tipo);

$st->bindParam(':Usuario',$usuario);

$st->execute();

}

182

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function inserirGrupo($nome, $usuario)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this->sqlInsertGrupo);

$st->bindParam(':Nome',$nome);

$st->bindParam(':Usuario',$usuario);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function inserirLog($usuario,$evento,$datahora)

{

183

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this->sqlInsertLog);

$st->bindParam(':Usuario',$usuario);

$st->bindParam(':DataHora',$datahora);

$st->bindParam(':Evento',$evento);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function

inserirOcorrenciaEstacao($estacao,$datahora)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

184

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlInsertOcorrenciaEstacao);

$st->bindParam(':ID',$estacao);

$st->bindParam(':DataHora',$datahora);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function

inserirOcorrenciaNoderede($noderede,$datahora)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlInsertOcorrenciaNoderede);

$st->bindParam(':ID',$noderede);

$st->bindParam(':DataHora',$datahora);

185

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function

inserirOcorrenciaDispositivo($dispositivo,$datahora)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlInsertOcorrenciaDispositivo);

$st->bindParam(':ID',$dispositivo);

$st->bindParam(':DataHora',$datahora);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

186

}

}

}

15.2.1.4 Página alterar.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento de Sistemas -

Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes - 2013

@O switch irá verificar qual o tipo de formulário (alteração) está sendo passado.

Definido o tipo de alteração, cria-se um objeto Update, chama-se o método

adequado (informando os valores a serem alterados). Feita a alteração, é hora de

registrar isso na tabela de logs do sistema informando o usuário q fez a alteração

(id), o tipo de alteração (tipoform) e quando ele fez tal alteração (date()). Finalmente,

é informando (via 'alert') que a alteração foi realizada e é feito um redirecionamento

*/

session_start(); //Pega os valores personalizados do usuário

atual.

switch ($_POST['tipoform'])

{

case 'Alterar Usuario' :

{

require_once('alterar.class.php');

$update = new Update();

$update-

>alterarUsuario($_POST['id'],$_POST['email'],$_POST['nome'],$_POST['perfil'],$_PO

ST['telefone']);

require_once("inserir.class.php");

187

$insert = new Insert();

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

echo("<script type='text/javascript'>

alert('Usu\u00e1rio alterado com sucesso!');

location.href='../administracao';</script>");

break;

}

case 'Alterar Usuario Logado' :

{

require_once('alterar.class.php');

$update = new Update();

$update-

>alterarUsuarioLogado($_POST['id'],$_POST['email'],$_POST['nome'],$_POST['login

'],$_POST['senha'],$_POST['perfil'],$_POST['telefone']);

//Atualizando a sessão com os novos dados do

usuário logado no sistema.

$_SESSION['nome'] = $_POST['nome'];

$_SESSION['login'] = $_POST['login'];

$_SESSION['senha'] = $_POST['senha'];

$_SESSION['email'] = $_POST['email'];

$_SESSION['perfil'] = $_POST['perfil'];

$_SESSION['telefone'] = $_POST['telefone'];

require_once("inserir.class.php");

188

$insert = new Insert();

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

echo("<script type='text/javascript'>

alert('Usu\u00e1rio alterado com sucesso!');

location.href='../administracao';</script>");

break;

}

case 'Alterar Estacao' :

{

require_once('alterar.class.php');

$update = new Update();

$update-

>alterarEstacao($_POST['id'],$_POST['ip'],$_POST['nome'],$_POST['local'],$_POST[

'so'],$_POST['hd'],$_POST['cpu'],$_POST['ram'],$_POST['status'], $_SESSION['id']);

require_once("inserir.class.php");

$insert = new Insert();

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

echo("<script type='text/javascript'>

alert('Esta\u00e7\u00e3o alterada com sucesso!');

location.href='../inventario/estacoes.php';</script>");

break;

189

}

case 'Alterar No de Rede' :

{

require_once('alterar.class.php');

$update = new Update();

$update-

>alterarNoderede($_POST['id'],$_POST['ip'],$_POST['nome'],$_POST['local'],$_POS

T['marca'],$_POST['modelo'],$_POST['freq'],$_POST['dbi'],$_POST['status'],$_POST

['tipono'],$_SESSION['id']);

require_once("inserir.class.php");

$insert = new Insert();

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

echo("<script type='text/javascript'> alert('N\u00f3

de Rede alterado com sucesso!');

location.href='../inventario/noderede.php';</script>");

break;

}

case 'Alterar Dispositivo' :

{

require_once('alterar.class.php');

$update = new Update();

$update-

190

>alterarDispositivo($_POST['id'],$_POST['ip'],$_POST['nome'],$_POST['local'],$_PO

ST['status'],$_POST['tipodispositivo'],$_SESSION['id']);

require_once("inserir.class.php");

$insert = new Insert();

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

echo("<script type='text/javascript'>

alert('Dispositivo alterado com sucesso!');

location.href='../inventario/dispositivos.php';</script>");

break;

}

case 'Alterar Grupo' :

{

require_once('alterar.class.php');

$update = new Update();

$update-

>alterarGrupo($_POST['nomegrupo'],$_POST['idgrupo']);

//Alterando o 'id' do grupo nos dispositivos que

foram selecionadas no checkbox

if(isset($_POST['iddispositivo']))

{

for($index = 0; $index <

count($_POST['iddispositivo']); $index++)

{

$update-

191

>alterarDispositivoGrupo($_POST['idgrupo'], $_POST['iddispositivo'][$index]);

}

}

//Alterando o 'id' do grupo nas estações que foram

selecionadas no checkbox

if(isset($_POST['idestacao']))

{

for($index = 0; $index <

count($_POST['idestacao']); $index++)

{

$update-

>alterarEstacaoGrupo($_POST['idgrupo'], $_POST['idestacao'][$index]);

}

}

//Alterando o 'id' do grupo nos nós de rede que

foram selecionadas no checkbox

if(isset($_POST['idnoderede']))

{

for($index = 0; $index <

count($_POST['idnoderede']); $index++)

{

$update-

>alterarNoderedeGrupo($_POST['idgrupo'], $_POST['idnoderede'][$index]);

}

}

require_once("inserir.class.php");

$insert = new Insert();

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

192

echo("<script type='text/javascript'> alert('Grupo

alterado com sucesso!'); location.href='../monitoramento/grupos.php';</script>");

break;

}

}

15.2.1.5 Arquivo alterar.class.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento de Sistemas -

Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes - 2013

@Classe responsável por alterar os valores inseridos no BD. Os atributos contém a

chamada específica p/ a Procedure específica. Já os métodos são os resposnáveis

por estabelecer a conexão com o BD, criar as PDO (Php Data Object), preparam os

comandos SQL, trocar os valores (bindParam) e executam a chamada p/ as

Procedures.

*/

class Update

{

public $resposta; //Armazena uma possível resposta -

Não vai ser muito usada, mas caso haja problemas, ela pode ser útil

//=============================================ATRIBU

TOS sqlUpdate...=============================================

//Os atributos basicamente contêm as chamadas ('CALL')

para a alteração desejada, chamada essa feita para a procedure armazenada no

BD.

//A nomenclatura usada nos atributos é sempre

'sqlUpdateAlgumaCoisa'.

193

private $sqlUpdateUsuario = "CALL

alterarUsuario(:ID,:Email,:Nome,:Perfil,:Telefone)";

private $sqlUpdateUsuarioLogado = "CALL

alterarUsuarioLogado(:ID,:Email,:Nome,:Login,:Senha,:Perfil,:Telefone)";

private $sqlUpdateEstacao = "CALL

alterarEstacao(:ID,:IP,:Nome,:Local,:SO,:HD,:CPU,:Ram,:Status)";

private $sqlUpdateNoderede = "CALL

alterarNoderede(:ID,:IP,:Nome,:Local,:Marca,:Modelo,:Freq,:DBI,:Status,:Tipo)";

private $sqlUpdateDispositivo = "CALL

alterarDispositivo(:ID,:IP, :Nome, :Local, :Status, :Tipo)";

private $sqlUpdateGrupo = "CALL

alterarGrupo(:Nome,:ID)";

private $sqlUpdateEstacaoSemGrupo = "CALL

alterarEstacaoSemGrupo()";

private $sqlUpdateNoderedeSemGrupo = "CALL

alterarNoderedeSemGrupo()";

private $sqlUpdateDispositivoSemGrupo = "CALL

alterarDispositivoSemGrupo()";

private $sqlUpdateEstacaoGrupo = "CALL

alterarEstacaoGrupo(:Grupo,:ID)";

private $sqlUpdateNoderedeGrupo = "CALL

alterarNoderedeGrupo(:Grupo, :ID)";

194

private $sqlUpdateDispositivoGrupo = "CALL

alterarDispositivoGrupo(:Grupo,:ID)";

//==================================================M

ÉTODOS

alterar...======================================================

//Os métodos basicamente criam uma conexão, criam

uma PDO, preparam a chamada, insere o valor a ser alterado no BD dentro do

comando da

//chamada da procedure e fazem a chamada p/ a

Procedure desejada.

//A nomenclatura usada nos métodos é

'alterarAlgumaCoisa'

public function

alterarUsuario($id,$email,$nome,$perfil,$telefone)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlUpdateUsuario);

$st->bindParam(':ID',$id);

$st->bindParam(':Email',$email);

$st->bindParam(':Nome',$nome);

$st->bindParam(':Perfil',$perfil);

195

$st->bindParam(':Telefone',$telefone);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function

alterarUsuarioLogado($id,$email,$nome,$login,$senha,$perfil,$telefone)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlUpdateUsuarioLogado);

$st->bindParam(':ID',$id);

$st->bindParam(':Email',$email);

$st->bindParam(':Nome',$nome);

$st->bindParam(':Login',$login);

$st->bindParam(':Senha',$senha);

$st->bindParam(':Perfil',$perfil);

$st->bindParam(':Telefone',$telefone);

196

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function alterarEstacao($id, $ip, $nome, $local,

$so, $hd, $cpu, $ram, $status)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlUpdateEstacao);

$st->bindParam(':IP',$ip);

$st->bindParam(':Nome',$nome);

$st->bindParam(':Local',$local);

$st->bindParam(':SO',$so);

$st->bindParam(':HD',$hd);

$st->bindParam(':CPU',$cpu);

$st->bindParam(':Ram',$ram);

$st->bindParam(':Status',$status);

$st->bindParam(':ID',$id);

197

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function alterarNoderede($id, $ip, $nome, $local,

$marca, $modelo, $freq, $dbi, $status, $tipo)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlUpdateNoderede);

$st->bindParam(':ID',$id);

$st->bindParam(':IP',$ip);

$st->bindParam(':Nome',$nome);

$st->bindParam(':Local',$local);

$st->bindParam(':Marca',$marca);

$st->bindParam(':Modelo',$modelo);

$st->bindParam(':Freq',$freq);

$st->bindParam(':DBI',$dbi);

$st->bindParam(':Status',$status);

$st->bindParam(':Tipo',$tipo);

198

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function alterarDispositivo($id, $ip, $nome, $local,

$status, $tipo)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlUpdateDispositivo);

$st->bindParam(':ID',$id);

$st->bindParam(':IP',$ip);

$st->bindParam(':Nome',$nome);

$st->bindParam(':Local',$local);

$st->bindParam(':Status',$status);

$st->bindParam(':Tipo',$tipo);

$st->execute();

}

199

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function alterarDispositivoGrupo($idGrupo,

$idDispositivo)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlUpdateDispositivoGrupo);

$st->bindParam(":Grupo",$idGrupo);

$st->bindParam(":ID",$idDispositivo);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

200

public function alterarNoderedeGrupo($idGrupo,

$idNoderede)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlUpdateNoderedeGrupo);

$st->bindParam(":Grupo",$idGrupo);

$st->bindParam(":ID",$idNoderede);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function

alterarEstacaoGrupo($idGrupo,$idEstacao)

{

try

{

201

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlUpdateEstacaoGrupo);

$st->bindParam(":Grupo",$idGrupo);

$st->bindParam(":ID",$idEstacao);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function alterarEstacaoSemGrupo()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

202

>sqlUpdateEstacaoSemGrupo);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function alterarNoderedeSemGrupo()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlUpdateNoderedeSemGrupo);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

203

public function alterarDispositivoSemGrupo()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlUpdateDispositivoSemGrupo);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function alterarGrupo($nome, $idgrupo)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

204

$st = $pdo->prepare($this-

>sqlUpdateGrupo);

$st->bindParam(":Nome",$nome);

$st->bindParam(":ID",$idgrupo);

$st->execute();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

}

15.2.1.6 Página excluir.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento de Sistemas -

Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes - 2013

@O switch irá verificar qual o tipo de formulário (exclusão) está sendo passado.

Definido o tipo de exclusão, cria-se um objeto Delete, chama-se o método adequado

(informando o 'id' no registro a ser excluído no BD). Feito a exclusão, é hora de

registrar isso na tabela de logs do sistema informando o usuário q fez a exlcusão

(id), o tipo de exclusão (tipoform) e quando ele fez tal exclusão (date()). Finalmente,

é informando (via 'alert') que a exclusão foi realizada e é feito um redirecionamento

*/

session_start(); //Pega os valores personalizados do usuário

atual.

switch ($_POST['tipoform'])

205

{

case 'Excluir Usuario' :

{

if(isset($_POST['idusuario']))

{

require_once('excluir.class.php');

$delete = new Delete();

$delete-

>excluirUsuario($_POST['idusuario']);

require_once("inserir.class.php");

$insert = new Insert();

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

echo("<script type='text/javascript'>

alert('Usu\u00e1rio exclu\u00eddo com sucesso!');

location.href='../administracao';</script>");

}

else

echo("<script type='text/javascript'>

alert('Nenhum Usu\u00e1rio foi selecionado!');

location.href='../administracao/excluirusuario.php';</script>");

break;

}

case 'Excluir Estacao' :

{

206

if(isset($_POST['id']))

{

require_once('excluir.class.php');

$delete = new Delete();

$delete->excluirEstacao($_POST['id']);

require_once("inserir.class.php");

$insert = new Insert();

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

echo("<script type='text/javascript'>

alert('Esta\u00e7\u00e3o exclu\u00edda com sucesso!');

location.href='../inventario/estacoes.php';</script>");

}

else

echo("<script type='text/javascript'>

alert('Nenhuma Esta\u00e7\u00e3o foi selecionada!');

location.href='../inventario/excluirestacao.php';</script>");

break;

}

case 'Excluir No de Rede' :

{

if(isset($_POST['id']))

{

require_once('excluir.class.php');

207

$delete = new Delete();

$delete->excluirNoderede($_POST['id']);

require_once("inserir.class.php");

$insert = new Insert();

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

echo("<script type='text/javascript'>

alert('N\u00f3 de Rede exclu\u00eddo com sucesso!');

location.href='../inventario/noderede.php';</script>");

}

else

echo("<script type='text/javascript'>

alert('Nenhum N\u00f3 de Rede foi selecionado!');

location.href='../inventario/excluirnoderede.php';</script>");

break;

}

case 'Excluir Dispositivo' :

{

if(isset($_POST['id']))

{

require_once('excluir.class.php');

$delete = new Delete();

$delete->excluirDispositivo($_POST['id']);

208

require_once("inserir.class.php");

$insert = new Insert();

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

echo("<script type='text/javascript'>

alert('Dispositivo exclu\u00eddo com sucesso!');

location.href='../inventario/dispositivos.php';</script>");

}

else

echo("<script type='text/javascript'>

alert('Nenhum Dispositivo foi selecionado!');

location.href='../inventario/excluirdispositivo.php';</script>");

break;

}

case 'Excluir Grupo' :

{

if(isset($_POST['idgrupo']))

{

require_once('excluir.class.php');

$delete = new Delete();

$delete->excluirGrupo($_POST['idgrupo']);

require_once("inserir.class.php");

$insert = new Insert();

209

require_once('alterar.class.php');

$update = new Update();

//Os três métodos alterar Inserem os ativos

que pertenciam ao grupo excuído no Grupo Padrão. Ninguém pode ficar sem um

grupo, né?

$update->alterarEstacaoSemGrupo();

$update->alterarNoderedeSemGrupo();

$update->alterarDispositivoSemGrupo();

$insert-

>inserirLog($_SESSION['id'],$_POST['tipoform'],date('d/m/Y H:i'));

echo("<script type='text/javascript'>

alert('Grupo exclu\u00eddo com sucesso!');

location.href='../monitoramento/grupos.php';</script>");

}

else

echo("<script type='text/javascript'>

alert('Nenhum Grupo foi selecionado!');

location.href='../monitoramento/excluirgrupo.php';</script>");

break;

}

}

15.2.1.7 Arquivo excluir.class.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento de Sistemas -

Unopar Arapiraca - AL

210

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes - 2013

@Classe responsável por excluir os valores inseridos no BD. Os atributos contém a

chamada específica p/ a Procedure específica. Já os métodos são os resposnáveis

por estabelecer a conexão com o BD, criar as PDO (Php Data Object), preparam os

comandos SQL, trocar os valores (bindParam) e executam a chamada p/ as

Procedures p/ a devida exclusão.

*/

class Delete

{

public $resposta; //Armazena uma possível resposta - não

vai ser muito usado.

//=======================================ATRIBUTOS

sqlDelete...=============================================

//Os atributos basicamente contêm as chamadas ('CALL')

para a exclusão desejada, chamada essa feita para a procedure armazenada no BD.

//A nomenclatura usada nos atributos é sempre

'sqlDeleteAlgumaCoisa'.

private $sqlDeleteUsuario = "CALL excluirUsuario(:ID)";

private $sqlDeleteEstacao = "CALL excluirEstacao(:ID)";

private $sqlDeleteNoderede = "CALL

excluirNoderede(:ID)";

private $sqlDeleteDispositivo = "CALL

excluirDispositivo(:ID)";

private $sqlDeleteGrupo = "CALL excluirGrupo(:ID)";

//=======================================MÉTODOS

211

excluir...===============================================

//Os métodos basicamente criam uma conexão, criam

uma PDO, preparam a chamada, passam o 'id' do item a ser excluído no BD dentro

do comando da

//chamada da procedure e fazem a chamada p/ a

Procedure desejada.

//A nomenclatura usada nos métodos é

'excluirAlgumaCoisa'

public function excluirUsuario($idUsuario)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this->sqlDeleteUsuario);

$st->bindParam(':ID',$idUsuario);

$st->execute();

}

catch (Exception $e)

{

echo "Erro: " . $getMessage();

}

}

public function excluirEstacao($id)

212

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this->sqlDeleteEstacao);

$st->bindParam(':ID',$id);

$st->execute();

}

catch (Exception $e)

{

echo "Erro: " . $getMessage();

}

}

public function excluirNoderede($id)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

213

$st = $pdo->prepare($this->sqlDeleteNoderede);

$st->bindParam(':ID',$id);

$st->execute();

}

catch (Exception $e)

{

echo "Erro: " . $getMessage();

}

}

public function excluirDispositivo($id)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this->sqlDeleteDispositivo);

$st->bindParam(':ID',$id);

$st->execute();

}

catch (Exception $e)

{

echo "Erro: " . $getMessage();

214

}

}

public function excluirGrupo($id)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this->sqlDeleteGrupo);

$st->bindParam(':ID',$id);

$st->execute();

}

catch (Exception $e)

{

echo "Erro: " . $getMessage();

}

}

}

15.2.1.8 Arquivo pesquisar.class.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento de Sistemas -

Unopar Arapiraca - AL

215

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes - 2013

@Classe responsável por conter os comandos relacionados às pesquisas SQL. Os

atributos contém a chamada p/ a Procedure desejada. Os métodos trocam os

valores, estabelecem a conexão, criam as PDO e executam a chamada contida nos

atributos.

*/

class Select

{

public $registro; //Armazena o resultado da pesquisa.

//=============================================ATRIBU

TOS sqlSelect... ======================================

//Os atributos basicamente contêm as chamadas ('CALL')

para a pesquisa desejada, chamada essa feita para a procedure armazenada no BD.

//A nomenclatura usada nos atributos é sempre

'sqlSelectAlgumaCoisa'.

private $sqlSelectLogin = "CALL

pesquisarUsuarioLogin(:Login,:Senha)";

private $sqlSelectUsuarioTodos = "CALL

pesquisarUsuarioTodos()";

private $sqlSelectUsuarioTodosExceto = "CALL

pesquisarUsuarioTodosExceto(:ID)";

private $sqlSelectUsuarioID = "CALL

pesquisarUsuarioID(:ID)";

private $sqlSelectEstacaoID = "CALL

pesquisarEstacaoID(:ID)";

private $sqlSelectNoderedeID = "CALL

216

pesquisarNoderedeID(:ID)";

private $sqlSelectDispositivoID = "CALL

pesquisarDispositivoID(:ID)";

private $sqlSelectEstacaoTodos = "CALL

pesquisarEstacaoTodos()";

private $sqlSelectNoderedeTodos = "CALL

pesquisarNoderedeTodos()";

private $sqlSelectDispositivoTodos = "CALL

pesquisarDispositivoTodos()";

private $sqlSelectEstacaoLimite = "CALL

pesquisarEstacaoLimite()";

private $sqlSelectNoderedeLimite = "CALL

pesquisarNoderedeLimite()";

private $sqlSelectDispositivoLimite = "CALL

pesquisarDispositivoLimite()";

private $sqlSelectGrupoTodos = "CALL

pesquisarGrupoTodos()";

private $sqlSelectGrupoUltimo = "CALL

pesquisarGrupoUltimo()";

private $sqlSelectGrupoID = "CALL

pesquisarGrupoID(:ID)";

private $sqlSelectEstacaoGrupo = "CALL

pesquisarEstacaoGrupo(:IDGrupo)";

217

private $sqlSelectNoderedeGrupo = "CALL

pesquisarNoderedeGrupo(:IDGrupo)";

private $sqlSelectDispositivoGrupo = "CALL

pesquisarDispositivoGrupo(:IDGrupo)";

private $sqlSelectQuantOcorrenciaEstacao = "CALL

pesquisarQuantOcorrenciaEstacao(:ID,:DataHora)";

private $sqlSelectQuantOcorrenciaNoderede = "CALL

pesquisarQuantOcorrenciaNoderede(:ID,:DataHora)";

private $sqlSelectQuantOcorrenciaDispositivo = "CALL

pesquisarQuantOcorrenciaDispositivo(:ID,:DataHora)";

private $sqlSelectQuantUsuario = "CALL

pesquisarQuantUsuario()";

private $sqlSelectQuantAdministrador = "CALL

pesquisarQuantAdministrador()";

private $sqlSelectQuantOperador = "CALL

pesquisarQuantOperador()";

private $sqlSelectAcessoData = "CALL

pesquisarAcessoData(:DataHora)";

private $sqlSelectAcessoUsuario = "CALL

pesquisarAcessoUsuario(:ID)";

private $sqlSelectAcoesData = "CALL

pesquisarAcoesData(:DataHora)";

218

private $sqlSelectAcoesUsuario = "CALL

pesquisarAcoesUsuario(:ID)";

private $sqlSelectQuantEstacao = "CALL

pesquisarQuantEstacao()";

private $sqlSelectQuantNoderede = "CALL

pesquisarQuantNoderede()";

private $sqlSelectQuantDispositivo = "CALL

pesquisarQuantDispositivo()";

private $sqlSelectEstacoesUsuario = "CALL

pesquisarEstacoesUsuario(:ID)";

private $sqlSelectNosderedeUsuario = "CALL

pesquisarNosderedeUsuario(:ID)";

private $sqlSelectDispositivosUsuario = "CALL

pesquisarDispositivosUsuario(:ID)";

private $sqlSelectUltimasOcorrEstacao = "CALL

pesquisarUltimasOcorrEstacao()";

private $sqlSelectUltimasOcorrNoderede = "CALL

pesquisarUltimasOcorrNoderede()";

private $sqlSelectUltimasOcorrDispositivo = "CALL

pesquisarUltimasOcorrDispositivo()";

private $sqlSelectOcorrEstacao = "CALL

pesquisarOcorrEstacao()";

private $sqlSelectOcorrNoderede = "CALL

219

pesquisarOcorrNoderede()";

private $sqlSelectOcorrDispositivo = "CALL

pesquisarOcorrDispositivo()";

private $sqlSelectUltimoAcesso = "CALL

pesquisarUltimoAcesso(:ID)";

private $sqlSelectTodosLog = "CALL

pesquisarTodosLog()";

//=============================================MÉ

TODOS pesquisar... ======================================

//Os métodos basicamente criam uma conexão, criam uma

PDO, preparam a chamada, fazem a chamada p/ a Procedure desejada e passam o

resultado p/ o registro.

//A nomenclatura usada nos métodos é 'pesquisarAlgumaCoisa'

public function pesquisarUsuarioTodos()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectUsuarioTodos);

$st->execute();

220

$this->registro = $st;

}

catch (Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function

pesquisarUsuarioTodosExceto($idusuarioatual)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectUsuarioTodosExceto);

$st->bindParam(':ID',$idusuarioatual);

$st->execute();

$this->registro = $st->fetchAll();

}

catch (Exception $e)

{

221

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarUsuarioID($idusuario)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectUsuarioID);

$st->bindParam(':ID',$idusuario);

$st->execute();

$this->registro = $st;

}

catch (Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarDispositivoID($iddispositivo)

{

try

222

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectDispositivoID);

$st->bindParam(':ID',$iddispositivo);

$st->execute();

$this->registro = $st->fetchAll();

}

catch (Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarEstacaoID($idestacao)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

223

$st = $pdo->prepare($this-

>sqlSelectEstacaoID);

$st->bindParam(':ID',$idestacao);

$st->execute();

$this->registro = $st->fetchAll();

}

catch (Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarNoderedeID($idestacao)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectNoderedeID);

$st->bindParam(':ID',$idestacao);

$st->execute();

224

$this->registro = $st->fetchAll();

}

catch (Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarUsuarioLogin($login,$senha)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this->sqlSelectLogin);

$st->bindParam(':Login',$login);

$st->bindParam(':Senha',$senha);

$st->execute();

$this->registro = $st->fetchObject();

}

catch (Exception $e)

{

225

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarEstacaoTodos()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectEstacaoTodos);

$st->execute();

$this->registro = $st->fetchAll();

}

catch (Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarEstacaoLimite()

{

try

{

require_once("conexao.class.php");

226

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectEstacaoLimite);

$st->execute();

$this->registro = $st;

}

catch (Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarNoderedeTodos()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectNoderedeTodos);

227

$st->execute();

$this->registro = $st->fetchAll();

}

catch (Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarNoderedeLimite()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectNoderedeLimite);

$st->execute();

$this->registro = $st;

}

catch (Exception $e)

{

echo "Erro: " . $e->getMessage();

}

228

}

public function pesquisarDispositivoTodos()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectDispositivoTodos);

$st->execute();

$this->registro = $st->fetchAll();

}

catch (Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarDispositivoLimite()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

229

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectDispositivoLimite);

$st->execute();

$this->registro = $st;

}

catch (Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarGrupoUltimo()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectGrupoUltimo);

$st->execute();

230

$this->registro = $st->fetchObject();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarGrupoTodos()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectGrupoTodos);

$st->execute();

$this->registro = $st->fetchAll();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

231

public function pesquisarGrupoID($grupo)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectGrupoID);

$st->bindParam(':ID',$grupo);

$st->execute();

$this->registro = $st->fetchAll();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarEstacaoGrupo($grupo)

{

try

{

require_once("conexao.class.php");

232

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectEstacaoGrupo);

$st->bindParam(':IDGrupo',$grupo);

$st->execute();

$this->registro = $st->fetchAll();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarNoderedeGrupo($grupo)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

233

>sqlSelectNoderedeGrupo);

$st->bindParam(':IDGrupo',$grupo);

$st->execute();

$this->registro = $st->fetchAll();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarDispositivoGrupo($grupo)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectDispositivoGrupo);

$st->bindParam(':IDGrupo',$grupo);

$st->execute();

$this->registro = $st->fetchAll();

234

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function

pesquisarQuantOcorrenciaEstacao($estacao,$datahora)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectQuantOcorrenciaEstacao);

$st->bindParam(':ID',$estacao);

$st->bindParam(':DataHora',$datahora);

$st->execute();

return $st->fetchAll();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

235

}

}

public function

pesquisarQuantOcorrenciaNoderede($noderede,$datahora)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectQuantOcorrenciaNoderede);

$st->bindParam(':ID',$noderede);

$st->bindParam(':DataHora',$datahora);

$st->execute();

return $st->fetchAll();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function

236

pesquisarQuantOcorrenciaDispositivo($dispositivo,$datahora)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectQuantOcorrenciaDispositivo);

$st->bindParam(':ID',$dispositivo);

$st->bindParam(':DataHora',$datahora);

$st->execute();

return $st->fetchAll();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarQuantUsuario()

{

try

{

require_once("conexao.class.php");

237

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectQuantUsuario);

$st->execute();

$this->registro = $st->fetch();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarQuantAdministrador()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectQuantAdministrador);

238

$st->execute();

$this->registro = $st->fetch();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarQuantOperador()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectQuantOperador);

$st->execute();

$this->registro = $st->fetch();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

239

}

}

public function pesquisarAcessoData($data)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectAcessoData);

$st->bindParam(':DataHora',$data);

$st->execute();

$this->registro = $st;

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarAcessoUsuario($usuario)

{

240

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectAcessoUsuario);

$st->bindParam(':ID',$usuario);

$st->execute();

$this->registro = $st;

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarAcoesData($data)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

241

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectAcoesData);

$st->bindParam(':DataHora',$data);

$st->execute();

$this->registro = $st;

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarAcoesUsuario($usuario)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectAcoesUsuario);

$st->bindParam(':ID',$usuario);

242

$st->execute();

$this->registro = $st;

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarQuantEstacao()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectQuantEstacao);

$st->execute();

$this->registro = $st->fetch();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

243

}

public function pesquisarQuantNoderede()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectQuantNoderede);

$st->execute();

$this->registro = $st->fetch();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarQuantDispositivo()

{

try

{

require_once("conexao.class.php");

244

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectQuantDispositivo);

$st->execute();

$this->registro = $st->fetch();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarEstacoesUsuario($idusuario)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectEstacoesUsuario);

245

$st->bindParam(':ID',$idusuario);

$st->execute();

$this->registro = $st;

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarNosderedeUsuario($idusuario)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectNosderedeUsuario);

$st->bindParam(':ID',$idusuario);

$st->execute();

$this->registro = $st;

}

246

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarDispositivosUsuario($idusuario)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectDispositivosUsuario);

$st->bindParam(':ID',$idusuario);

$st->execute();

$this->registro = $st;

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

247

public function pesquisarUltimasOcorrEstacao()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectUltimasOcorrEstacao);

$st->execute();

$this->registro = $st;

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarUltimasOcorrNoderede()

{

try

{

require_once("conexao.class.php");

248

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectUltimasOcorrNoderede);

$st->execute();

$this->registro = $st;

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarUltimasOcorrDispositivo()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectUltimasOcorrDispositivo);

249

$st->execute();

$this->registro = $st;

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarOcorrEstacao()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectOcorrEstacao);

$st->execute();

$this->registro = $st;

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

250

}

public function pesquisarOcorrNoderede()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectOcorrNoderede);

$st->execute();

$this->registro = $st;

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarOcorrDispositivo()

{

try

{

require_once("conexao.class.php");

251

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectOcorrDispositivo);

$st->execute();

$this->registro = $st;

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarUltimoAcesso($idusuario)

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectUltimoAcesso);

252

$st->bindParam(':ID',$idusuario);

$st->execute();

$this->registro = $st->fetchObject();

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

public function pesquisarTodosLog()

{

try

{

require_once("conexao.class.php");

$conexao = new Conexao();

$pdo = new PDO($conexao->dsn,$conexao-

>usuario,$conexao->senha,$conexao->opcoes);

$st = $pdo->prepare($this-

>sqlSelectTodosLog);

$st->execute();

$this->registro = $st;

}

253

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

}

15.2.2 CÓDIGO CSS (comum.css)

body,html,div,blockquote,img,label,p,a,h1,h2,h3,h4,h5,h6,pre,ul,ol,li,dl,dt,dd,form,fi

eldset,input,th,td,figure {border:0;margin:0;padding:0}

h1,h2,h3,h4,h5,h6 {font-size:100%}

img{display:block;height:auto;max-width:100%;width:auto}

a,:focus{outline:0}

table{height:auto;max-width:100%;width:auto;border-collapse:separate;border-

spacing:0}

caption,th,td{font-weight:normal;text-align:left}

::-moz-selection{background:#ff0}

::selection{background:#ff0}

html{background-color:#f8f8f8}

body{background-color:#fff}

.center-column{max-width:36.25em;margin:0 auto;padding:2.188em 0.875em

1em;position:relative}

.center-column, .search .center-column{border-bottom:1px solid #ddd}

.search .center-column{border-bottom-width:0.563em}

.search.search-no-results .center-column{border-bottom:none}

a{

border-bottom:1px dotted;font-weight:700;text-decoration:none;-moz-transition:all

0.25s ease-in-out 0s;-ms-transition:all 0.25s ease-in-out 0s;-o-transition:all 0.25s ease-in-out 0s;-

webkit-transition:all 0.25s ease-in-out 0s;transition:all 0.25s ease-in-out 0s}

a,a:visited{border-bottom-color:#222;color:#222}

a:hover,a:active{border-bottom-color:#aeaeae;color:#aeaeae}

.clear:after{clear:both;content:"";display:block;height:0;visibility:hidden}

@font-face{font-weight:normal;font-style:normal}

.logo [data-icon]:before{content:attr(data-icon);font-style:normal;font-

weight:400;line-height:1;speak:none}

body{color:#555;font-family:Helvetica,Arial,sans-serif;font-style:normal;font-

weight:400;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}

h1,h2,h3,h4,h5,h6{color:#222;font-weight:700}

254

h1{font-size:1.75em;letter-spacing:-0.036em;line-height:1.25;margin-

bottom:1.25em}

h2{font-size:1.5em;letter-spacing:-0.042em;line-height:1.25;margin-bottom:1.25em}

h3{font-size:1.25em;letter-spacing:-0.050em;line-height:1.2;margin-bottom:1.2em}

h4{font-size:1em;line-height:1.5;margin-bottom:1.5em;margin-top:1.5em}

h5{font-size:0.875em;line-height:1.5;margin-bottom:1.5em;margin-top:1.5em}

h6{font-size:0.75em;line-height:1.5;margin-bottom:1.5em;margin-top:1.5em}

p{font-size:0.875em;line-height:1.5;margin-bottom:1.5em}

p{-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}

p a{-moz-hyphens:none;-webkit-hyphens:none;hyphens:none}

p+h1{margin-top:1.25em}p+h2{margin-top:1.25em}

p+h3{margin-top:1.2em}

p+p{margin-top:-1.5em;text-indent:1.5em}

strong,b{color:#222;font-weight:700}

ul,ol,dl{font-size:0.875em;line-height:1.5;margin-bottom:1.5em}

ul{padding-left:1em}

ul{list-style:disc}

ul ul, ol ul{list-style:circle}

ol, ul ol, ol ol ol{list-style:decimal}

ul ul, ol ul, ul ol, ol ol{font-size:inherit;margin:0.5em 0}

ul+h1,ol+h1,dl+h1{margin-top:1.25em}

ul+h2,ol+h2,dl+h2{margin-top:1.25em}

ul+h3,ol+h3,dl+h3{margin-top:1.2em}

table{font-size:0.500em;line-height:1.5;margin-bottom:1.5em;margin-

top:1.5em;width:100%}

th{color:#222;font-weight:700}

th,td{border-bottom:1px solid #ddd;padding:0.643em 0.5em 0.571em 0;text-

align:center;vertical-align:top}

table+h1{margin-top:1.25em}

table+h2{margin-top:1.25em}

table+h3{margin-top:1.2em}

label{color:#222;font-size:0.75em;font-weight:700;line-height:1.5;margin-

bottom:0.5em}

input[type=text],input[type=email],input[type=url],input[type=password],input[type=s

earch],input[type=submit],textarea{

font-family:Helvetica,Arial,sans-serif;-moz-appearance:none;-o-appearance:none;-

webkit-appearance:none}

input[type=text],input[type=email],input[type=url],input[type=password],input[type=s

earch],textarea{

background-color:#f3f3f3;color:#555;font-

255

size:0.875em;padding:0.643em;width:100%;-moz-border-radius:0.214em;-webkit-border-

radius:0.214em;border-radius:0.214em;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-

sizing:border-box;-moz-transition:all 0.5s ease-in-out 0s;-ms-transition:all 0.5s ease-in-out 0s;-o-

transition:all 0.5s ease-in-out 0s;-webkit-transition:all 0.5s ease-in-out 0s;transition:all 0.5s ease-in-out

0s}

input[type=text]:focus,input[type=email]:focus,input[type=url]:focus,input[type=pass

word]:focus,input[type=search]:focus,textarea:focus{

background-color:#222;color:#f3f3f3;-moz-border-radius:0;-webkit-border-

radius:0;border-radius:0}

textarea{border:none;height:12.5em;line-height:1.5;resize:none;overflow:auto}

input[type=submit]{

background-color:#00aed7;color:#fff;font-size:0.875em;font-

weight:700;padding:0.714em 1.429em;-moz-border-radius:0.214em;-webkit-border-

radius:0.214em;border-radius:0.214em;-moz-transition:all 0.5s ease-in-out 0s;-ms-transition:all 0.5s

ease-in-out 0s;-o-transition:all 0.5s ease-in-out 0s;-webkit-transition:all 0.5s ease-in-out

0s;transition:all 0.5s ease-in-out 0s}

input[type=submit]:hover{cursor:pointer;background-color:#0085a3}

.content-header{background-color:rgba(248,248,248,0.95);position:relative}

a.logo{background-color:#151515;border-bottom:none;color:#fff;display:block;font-

size:1.75em;line-height:2.57143em;padding:0 0.643em 0 0.536em;width:1em}

a.logo span{left:-9999em;position:absolute;top:-9999em}

a.logo:hover{background-color:#00aed7}

.main-nav{position:relative}

.has-js .main-nav{display:none}

.main-nav ul{font-size:0.875em;line-height:3.5em;list-style:none;margin-

bottom:0;padding-left:0;text-align:center}

.main-nav li{border-bottom:1px solid #444;border-right:1px solid

#444;float:left;width:50%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-

box}

.main-nav li:nth-child(even){border-right:none}

.main-nav li:nth-child(3), .main-nav li:nth-child(4){border-bottom:none}

.main-nav li a{background-color:#151515;border-

bottom:none;color:#bbb;display:block}

.main-nav li a:hover{color:#fff}

.mobile-nav-toggle{font-size:0.875em;line-

height:5.143em;position:absolute;right:0;top:0}

.mobile-nav-toggle a{border:none;display:block;padding:0 1.071em}

.article header h1 a{border-bottom:none}

.portfolio-grid{padding:2.188em 0.875em 0.875em;position:relative}

.quarter-grid{background-color:#414f56;display:block;margin-

256

bottom:1.313em;position:relative}

.quarter-grid a{border:none;display:block}

.portfolio-button{font-size:0.875em;line-height:2.5;position:relative}

.portfolio-button a{background-color:#fff;padding:0 0.643em}

.content-footer{background-color:#f8f8f8;padding:1.313em

1.313em;position:relative;text-align:center}

.content-footer div{margin:0 auto;max-width:36.25em}

.content-footer ul{font-size:1em;line-height:1.5;list-style:none;margin:0 auto

1.5em;padding-left:0}

.content-footer li{display:inline-block;margin:0 0.1875em}

.content-footer li a{border-bottom:none;display:block;padding:0.5em}

.content-footer li span{left:-9999em;position:absolute;top:-9999em}

.content-footer p{margin-bottom:0}

@media only screen and ( min-width: 28.125em ){

a.logo{float:left;width:auto}

.has-js .main-nav{float:right;display:block !important}

.main-nav ul{line-height:5.143em;text-align:left}

.main-nav li{border-bottom:none;border-right:none;width:auto}

.main-nav li a{background-color:transparent;color:#151515;padding:0 1.071em}

.main-nav li a:hover{background-color:#151515;color:#fff}

.mobile-nav-toggle{display:none}

.portfolio-grid{padding:0}

.quarter-grid{float:left;margin-bottom:0;width:50%}

.portfolio-button{height:100%;left:0;line-height:1;opacity:0;position:absolute;text-

align:center;top:0;width:100%;-moz-transition:opacity 0.4s ease-in 0.05s;-o-transition:opacity 0.4s

ease-in 0.05s;-webkit-transition:opacity 0.4s ease-in 0.05s;transition:opacity 0.4s ease-in 0.05s}

.fader{opacity:1}

.portfolio-button a{background-color:rgba(255,255,255,0.9);height:100%;line-

height:1;left:0;padding:0;position:relative;width:100%;top:0}

.portfolio-button a:hover{color:#222}

.portfolio-button span{left:40px;position:absolute;top:40px}}

@media only screen and ( min-width: 36.313em ){

.center-column{padding:2.5em 2.5em 0.938em}

.search .center-column{padding-bottom:0.938em}

.page-header h1, .article-content h1{font-size:2em;letter-spacing:-0.031em}

.article-content h2{font-size:1.75em;letter-spacing:-0.036em}

.article-content h3{font-size:1.375em;letter-spacing:-0.0454546em;line-

height:1.364;margin-bottom:1.364em}

257

.article-content h4{font-size:1.188em;line-height:1.316;margin-

bottom:1.316em;margin-top:1.316em}

.article-content h5{font-size:1em;line-height:1.5625;margin-

bottom:1.5625em;margin-top:1.5625em}

.article-content h6{font-size:0.813em;line-height:1.538em;margin-

bottom:1.538em;margin-top:1.538em}

.article-content p, .article-content address{font-size:1em;line-height:1.5625;margin-

bottom:1.5625em}

.article-content p+h3{margin-top:1.364em}.article-content p+p{margin-top:-

1.5625em;text-indent:1.5625em}

.article-content ul, .article-content ol, .article-content dl{font-size:1em;line-

height:1.5625;margin-bottom:1.5625em}

.article-content ul{padding-left:0.938em}.article-content ol{padding-left:1.5625em}

.article-content ul ul, .article-content ol ul, .article-content ul ol, .article-content ol

ol{margin:0.625em 0}

.article-content ul + h3, .article-content ol + h3, .article-content dl+h3{margin-

top:1.364em}

.article-content table{font-size:1em;line-height:1.5625;margin-

bottom:1.5625em;margin-top:1.5625em}

.article-content caption{font-size:1.188em;line-height:1.316em;margin-

bottom:1.316em}

.article-content th, .article-content td{padding-right:0.625em}

.article-content table+h3{margin-top:1.364em}

label{font-size:0.813em;line-height:1.538;margin-bottom:0.385em}

input[type=text],input[type=email],input[type=url],input[type=password],input[type=s

earch],textarea{

font-size:1em;padding:0.625em;-moz-border-radius:0.188em;-webkit-border-

radius:0.188em;border-radius:0.188em}

textarea{line-height:1.5625}

a.logo{line-height:3.286em;padding:0 1.42857em}

.main-nav ul{line-height:6.571em}

.main-nav li a{padding:0 1.667em}

.article-content p + p.post-meta, .article-content p.fancy-intro + p, .article-content

p+p.post-teaser{margin-top:0;text-indent:0}

.article-content p.fancy-intro{font-size:1.375em;line-height:1.59091;margin-

bottom:1.13636em;word-spacing:-0.0454546em}

.article-content .lead-in{font-size:0.863636em;letter-spacing:0.0526316em}

.article-content .post-anchor p{font-size:1.1875em;line-height:1.31578947;margin-

bottom:1.31578947em}

.article-content .quote-format{padding:0}.single-format-quote .article-content

258

.quote-format{margin-bottom:6.25em}

.article-content .quote-format p+p{margin-top:0;text-indent:0}

.article-content .quote-format .large-quote{font-size:2em;margin-

bottom:0.313em;text-indent:-0.406em}

.article-content p.interview-question{font-size:1.375em;line-height:1.364;margin-

bottom:1.13636364em;word-spacing:-0.04545455em}

.article-content p.interview-question + p, .article-content p+p.interview-

question{margin-top:0;text-indent:0}

.article-content {font-size:0.813em;line-height:1.538;margin-

bottom:1.538em;margin-top:0.769em}

.article-content p+p{margin-top:0;text-indent:0}

.article-content {margin-bottom:1.875em;padding-left:0}

.portfolio-button{font-size:1.188em;letter-spacing:-0.053em}

.content-footer{padding:2.5em}

.content-footer ul{margin-bottom:2.5em}}

@media only screen and ( min-width: 62.5em ){

.center-column{padding:10.813em 0 2.188em}

.search .center-column{padding-bottom:7.188em}

.center-column:first-of-type, .center-column:first-of-type, .search .center-

column:first-of-type{padding-top:10.813em}

.search .center-column.search-success{border-bottom-width:0.625em;padding-

bottom:2.5em}

.content-header{left:0;position:fixed;top:0;width:100%;z-index:1000}

a.logo{line-height:4em}

.main-nav ul{line-height:8em}

.main-nav li a{padding:0 2.857em}

.portfolio-button{font-size:1.375em;letter-spacing:-0.045em}

.content-footer{padding:2.5em 0}}

@media only screen and ( min-width: 80em ){

.quarter-grid{width:33.333%}

}

@media only screen and ( min-width: 120em ){

.quarter-grid {float:left;width:25%}

.portfolio-button{font-size:1.75em;letter-spacing:-0.036em}}

259

15.2.3 PÁGINA INDEX.HTML

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<!--

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento de Sistemas - Unopar Arapiraca

- AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes - 2013

@Esta é a página de login. O usuário deve informar o login (máximo de 15 caracteres) e a senha

(min. de 7 e máx. de 15).

!-->

<head>

<link title="default" rel="stylesheet" type="text/css"

href="comum.css">

<script type="text/javascript">

function validarLogin() //Função p/ verificar valors do login e

senha

{

if (document.frmLogin.login.value.length == 0)

//verificando se o login foi informado

{

alert ("Informe o login");

return false;

}

else

{

if (document.frmLogin.senha.value.length ==

0) //verificando se a senha foi informada

{

alert ("Informe a senha");

return false;

}

else

{

if

((document.frmLogin.senha.value.length < 7) || (document.frmLogin.senha.value.length > 15))

//verifica os valores max e min da senha

{

260

alert("A senha deve ter no mínimo 07

caracteres e no máximo 15 caracteres.");

return false;

}

}

}

}

</script>

<meta http-equiv="Content-Type" content="text/html;

charset=utf-8">

<title>PinGO PHP</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="index.html"><i data-icon="P"

aria-hidden="true"></i><span>PinGO</span></a>

</header>

<article class="center-column">

<div class="article-content">

<!--

chamada a funcao p/ verificar o login !-->

<form id="frmLogin" name="frmLogin"

method="post" action="login.php" onsubmit="return validarLogin(); return false;">

<input type="hidden"

name="tipoform" id="tipoform" value='Acessar o Sistema' />

<br />

<p><strong>Login</strong>

<input type="text"

name="login" id="login" maxlength="15" placeholder="Insira o login..." />

</p>

<br />

<p><strong>Senha</strong>

<input type="password"

name="senha" id="senha" maxlength="15" placeholder="M&iacute;nimo: 07 caracteres" />

</p>

261

<center>

<input name="btnentrar"

type="submit" value="entrar" />

</center>

</form>

</div>

</article>

<footer class="content-footer">

<div>

<p> &copy; 2013 <a

href="index.html">PinGO PHP</a></p>

</div>

</footer>

</body>

</html>

15.2.4 PÁGINA LOGIN.PHP

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento de Sistemas - Unopar Arapiraca

- AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes - 2013

@Esta classe é responsável pelos procedimentos relativos ao login do usuário. no sistema. A classe

cria um objeto Select p/ pesquisa por um usuário com o login e senha iguais ao passado pelo usuário.

Caso positivo, verifica se o valor retornado é idêntico ao valor passado, em positivo, passa os valores

retornados p/ a sessão do php a fim de personalizar o uso por parte do usuário. Depois é pesquisado

acerca do último acesso que o usuário fes (personalização). Por fim, é feito um registro na tabela de

logs, com o id do usuário, o evento ('Acessar o Sistema') e quando fez isso (date()) e ocorre um

redirecionamento. Se um dos casos der falso, o usuário é alertado que não foi feito o login e é

redirecionado p/ a página de login.

*/

class Login

{

public function Login($login, $senha, $evento)

{

try

{

require_once("crud/pesquisar.class.php");

262

$select = new Select();

$select->pesquisarUsuarioLogin($login,$senha);

if($select->registro)

{

if(($senha === (string) $select->registro-

>senha) && ($login === (string) $select->registro->login))

{

$_SESSION['nome'] = (string)

$select->registro->nome;

$_SESSION['login'] = (string)

$select->registro->login;

$_SESSION['senha'] = (string)

$select->registro->senha;

$_SESSION['id'] = (string) $select-

>registro->idusuario;

$_SESSION['email'] = (string)

$select->registro->email;

$_SESSION['perfil'] = (string)

$select->registro->perfil;

$_SESSION['telefone'] = (string)

$select->registro->telefone;

$_SESSION['grupo'] = 1;

$select-

>pesquisarUltimoAcesso($select->registro->idusuario);

$_SESSION['ultimoacesso'] =

$select->registro->datahora;

require_once("crud/inserir.class.php");

$insert = new Insert();

$insert-

>inserirLog($_SESSION['id'],$evento,date('d/m/Y H:i'));

263

header('Location: home.php');

}

else

{

echo("<script type='text/javascript'>

alert('Login e/ou Senha incorretos!'); location.href='index.html';</script>");

}

}

else

{

echo("<script type='text/javascript'>

alert('Inexiste Usu\u00e1rio com os dados informados!'); location.href='index.html';</script>");

}

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

}

session_start();

//Verifica se o login e senha foram informados

if((isset($_POST['login'])) && (isset($_POST['senha'])))

{

$login = new

Login($_POST['login'],$_POST['senha'],$_POST['tipoform']); //Instancia objeto da classe Login

}

else //Redireciona p/ a página de login

echo("<script type='text/javascript'> alert('Informe Login e/ou

Senha!'); location.href='index.html';</script>");

264

15.2.5 PÁGINA HOME.PHP

<?php

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="comum.css">

<script type="text/javascript">

function toggleContent()

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type" content="text/html;

charset=utf-8">

<title>PinGO PHP</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="home.php"><i data-icon="P"

aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

265

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="inventario">Invent&aacute;rio</a></li>

<li><a

href="monitoramento">Monitoramento</a></li>

<li><a

href="administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<?php

echo

"<h2>Ol&aacute;&nbsp;&nbsp;<strong>".$_SESSION['nome']."</strong>,</h2>";

print("<p>O <strong>Pingo

PHP</strong> &eacute; um sistema simples de monitoramento e gerenciamento de ativos de Rede.

Atrav&eacute;s

do <strong>Pingo PHP</strong>,

sua rede pode ser monitorada e gerenciada sem maiores complica&ccedil;&otilde;es</p>");

print("<p>Composto de quatro

m&oacute;dulos: <a href='inventario'>Invent&aacute;rio</a>, <a

href='monitoramento'>Monitoramento</a>,

<a

href='administracao'>Administra&ccedil;&atilde;o</a> e <a href='relatorio'>Relat&oacute;rio</a>, que

d&atilde;o amplo suporte

as suas necessidades.</p>");

print("<p>Tenha bom proveito do

<strong>Pingo PHP</strong>.</p>");

?>

</table>

</div>

266

</article>

<section class="portfolio-grid clear">

<div class='quarter-grid'>

<a href='monitoramento'>

<img

src='imagens/monitoramento.png' alt='Monitoramento'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'" onmouseout="this.className='portfolio-

button'">

<a href='monitoramento'

title='Monitoramento'>

<span>Monitoramento</span>

</a>

</div>

</div>

<div class='quarter-grid'>

<a href='inventario'>

<img

src='imagens/inventario.png' alt='Invent&aacute;rio'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'" onmouseout="this.className='portfolio-

button'">

<a href='inventario'

title='Invent&aacute;rio'>

<span>Invent&aacute;rio</span>

</a>

</div>

</div>

<div class='quarter-grid'>

<a href='administracao'>

<img

src='imagens/administracao.png' alt='Administra&ccedil;&atilde;o'>

</a>

267

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'" onmouseout="this.className='portfolio-

button'">

<a href='administracao'

title='Administra&ccedil;&atilde;o'>

<span>Administra&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class='quarter-grid'>

<a href='relatorio'>

<img

src='imagens/relatorio.png' alt='Relat&oacute;rio'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'" onmouseout="this.className='portfolio-

button'">

<a href='relatorio'

title='Relat&oacute;rio'>

<span>Relat&oacute;rio</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="monitoramento">Monitoramento</a></p></li>

<li><p><a

href="administracao">Administra&ccedil;&atilde;o</a></p></li>

268

<li><p><a

href="relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo $_SESSION['nome']

?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.6 PÁGINA LOGOUT.PHP

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento de Sistemas - Unopar Arapiraca

- AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes - 2013

@Esta classe é responsável por realizar o logout do usuário. Ao clicar em "Sair", cria-se um objeto

Logout, onde seu método construtor cria um objeto Insert, a fim de inserir na tabela de logs a saída

do sistema, bem como esse método destrói a sessão criada. Por fim, é feito um redirecionamento p/ a

página de login.

*/

class Logout

269

{

public function Logout($usuario, $datahora, $evento)

{

require_once('crud/inserir.class.php');

$insert = new Insert();

$insert->inserirLog($usuario, $datahora, $evento);

session_destroy();

header('Location: index.html');

}

}

session_start();

$logout = new Logout($_SESSION['id'],'Sair do Sistema',date('d/m/Y H:i'));

15.2.7 INVENTÁRIO

15.2.7.1 Página index.php

<?php /*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento de Sistemas -

Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes - 2013

@Página inicial da seção "Inventário", são apresentadas as informações referentes

aos ativos(Estações,Nós de Rede e Dispositivos).

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

270

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

271

<li><a

href="index.php">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Invent&aacute;rio</h1>

<?php

require_once('../crud/pesquisar.class.php');

$select = new Select();

$select->pesquisarQuantEstacao();

print('<p>Quantidade de

Esta&ccedil;&otilde;es cadastradas:<b> '.$select->registro[0][0].'</b></p>');

$select->pesquisarQuantNoderede();

print('<p>Quantidade de N&oacute;s

de Rede cadastrados:<b> '.$select->registro[0][0].'</b></p>');

$select-

>pesquisarQuantDispositivo();

272

print('<p>Quantidade de Dispositivos

cadastrados:<b> '.$select->registro[0][0].'</b></p>');

print("<p>Para ver mais

informa&ccedil;&otilde;es sobre os ativos cadastrados,

clique em <a

href='../relatorio/relat_ativo.php'>Relat&oacute;rios de Ativos</a>.</p>");

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a href='estacoes.php'>

<img

src="../imagens/estacao.png" alt="Esta&ccedil;&otilde;es">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a href='estacoes.php'

title='Esta&ccedil;&otilde;es'>

<span>Esta&ccedil;&otilde;es</span>

</a>

</div>

</div>

<div class='quarter-grid'>

<a href='noderede.php'>

<img

273

src='../imagens/noderede.png' alt='N&oacute;s de Rede'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a href='noderede.php'

title='N&oacute;s de Rede'>

<span>N&oacute;s de Rede</span>

</a>

</div>

</div>

<div class='quarter-grid'>

<a href='dispositivos.php'>

<img

src='../imagens/dispositivo.png' alt='Dispositivos'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href='dispositivos.php' title='Dispositivos'>

<span>Dispositivos</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

274

<li><p><a

href="index.php">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

275

15.2.7.2 Página dispositivos.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento de Sistemas -

Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes - 2013

@Nesta página, são apresentadas as informações referentes aos dispositivos.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

276

content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio -

Dispositivos</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="index.php">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento/">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h2>Dispositivos</h2>

<table>

<tr>

277

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Tipo</td>

<td>Status</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa por todos os

dispositivos

$select-

>pesquisarDispositivoTodos();

//Verifica se retornou

algum resultado

if($select->registro)

{

//Lista todos os

dispositivos

foreach ($select-

>registro as $registros)

{

print ("<tr>

<td>$registros[nome]</td>

278

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[tipo]</td>

<td>$registros[status]</td>

<tr>");

}

print("</table>");

}

else

{

print("</table><p>Nenhum registro encontrado</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<?php

279

//Verifica qual o perfil do Usuário ao acessar

esta página, alterando as opções apresentadas na seção de box. Cada macaco no

seu galho!

if($_SESSION['perfil'] === 'Administrador')

{

print('<div class="quarter-grid">

<a

href="cadastrardispositivo.php">

<img

src="../imagens/cadastrar_dispositivo.png" alt="Cadastrar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="cadastrardispositivo.php" title="Cadastrar Dispositivo">

<span>Cadastrar

Dispositivo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="alterardispositivo.php">

<img

src="../imagens/alterar_dispositivo.png" alt="Alterar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="alterardispositivo.php" title="Alterar Dispositivo">

<span>Alterar

280

Dispositivo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="excluirdispositivo.php">

<img

src="../imagens/excluir_dispositivo.png" alt="Excluir Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="excluirdispositivo.php" title="Excluir Dispositivo">

<span>Excluir

Dispositivo</span>

</a>

</div>

</div>

');

}

else

{

print('

<div class="quarter-grid">

<a href="estacoes.php">

<img

src="../imagens/estacao.png" alt="Esta&ccedil;&otilde;es">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

281

onmouseout="this.className=\'portfolio-button\'">

<a href="estacoes.php"

title="Esta&ccedil;&otilde;es">

<span>Esta&ccedil;&otilde;es</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="noderede.php">

<img

src="../imagens/noderede.png" alt="N&oacute;s de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a href="noderede.php"

title="N&oacute;s de Rede">

<span>N&oacute;s de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="dispositivos.php">

<img

src="../imagens/dispositivo.png" alt="Dispositivos">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

282

href="dispositivos.php" title="Dispositivos">

<span>Dispositivos</span>

</a>

</div>

</div>

');

}

?>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="index.php">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

283

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.7.3 Página cadastrardispositivo.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, o usuário, através do formulário, cadastra um novo

dispositivo.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

284

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

function checarForm() //Função p/ validar os dados

inseridos no form. Os dados obrigatórios são nome, ip, local e status

{

if(document.frmcadastrardispositivo.nome.value.length == 0)

{

alert("Informe o Nome.");

return false;

}

else

{

if(document.frmcadastrardispositivo.ip.value.length == 0)

{

alert("Informe o IP.");

return false;

}

else

{

if

285

(document.frmcadastrardispositivo.local.value.length == 0)

{

alert ("Informe o

Local.");

return false;

}

else

{

if(document.frmcadastrardispositivo.status.selectedIndex == 0)

{

alert("Selecione

um Status.");

return false;

}

}

}

}

}

</script>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio - Cadastrar Dispositivo</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="home.php"><i data-icon="P" aria-

hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

286

<a href="#" onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a href="index.php">Invent&aacute;rio</a></li>

<li><a href="../monitoramento">Monitoramento</a></li>

<li><a href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Cadastrar Dispositivo</h1>

<form name="frmcadastrardispositivo"

method="POST" action="../crud/cadastrar.php" onsubmit="return checarForm();

return false;">

<input name="tipoform" value="Cadastrar

Dispositivo" type="hidden" />

<label for="nome">Nome:</label>

<input name="nome" type="text" id="nome"

maxlength="30" tabindex="1" />

<br><br>

<label for="ip">Endere&ccedil;o IP:</label>

<input name="ip" type="text" id="ip"

maxlength="15" tabindex="2" />

<br><br>

<label for="local">Local:</label>

<input name="local" type="text" id="local"

maxlength="30" tabindex="3" />

<br></br>

<label for="tipodispositivo">Tipo:</label>

287

<select name="tipodispositivo"

id="tipodispositivo">

<option value="-------

">Selecione...</option>

<option

value="Impressora">Impressora</option>

<option

value="Câmera">C&acirc;mera</option>

<option

value="Sensor">Sensor</option>

<option

value="Telefone">VoIP</option>

<option

value="Outro">Outro</option>

</select>

<br><br>

<label for="status">Status:</label>

<select name="status" id="status">

<option value="-------

">Selecione...</option>

<option

value="Ativo">Ativo</option>

<option

value="Inativo">Inativo</option>

</select>

<br><br>

<input name="cadastrar" type="submit"

id="cadastrar" value="Cadastrar" tabindex="9" />

<input name="limpar" type="reset"

id="limpar" value="Limpar" tabindex="10" />

</form>

</div>

</article>

288

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="cadastrardispositivo.php">

<img

src="../imagens/cadastrar_dispositivo.png" alt="Cadastrar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrardispositivo.php" title="Cadastrar Dispositivo">

<span>Cadastrar

Dispositivo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="alterardispositivo.php">

<img

src="../imagens/alterar_dispositivo.png" alt="Alterar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterardispositivo.php" title="Alterar Dispositivo">

<span>Alterar

Dispositivo</span>

</a>

</div>

289

</div>

<div class="quarter-grid">

<a

href="excluirdispositivo.php">

<img

src="../imagens/excluir_dispositivo.png" alt="Excluir Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirdispositivo.php" title="Excluir Dispositivo">

<span>Excluir

Dispositivo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="index.php">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

290

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.7.4 Página alterardispositivo.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, o usuário seleciona qual dispositivo quer alterar e é

levado p/ a página de alteração.

*/

session_start();

291

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio - Dispositivo

- Alterar Dispositivo</title>

</head>

<body>

<header class="content-header clear">

292

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="index.php">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Alterar Dispositivo</h1>

<h4>Selecione o Dispositivo a ser

alterado</h4>

<form name="frmalterardispositivo"

method="POST" action="verdispositivo.php">

<table>

<tr>

<td></td>

293

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Tipo</td>

<td>Status</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquiso todos os

dispositivos

$select-

>pesquisarDispositivoTodos();

//Verifica se consulta

retornou alguma coisa

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Listo

todos os resultados

print ("<tr>

<td><input type='radio' name='id' value='$registros[id]' /></td>

294

<td>$registros[nome]</td>

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[tipo]</td>

<td>$registros[status]</td>

<tr>");

}

print("</table>

<input name='Alterar' type='submit' value='Alterar'></input>

</form>");

}

else

{

print("</table>

</form><p>Nenhum registro encontrado.</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

295

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="cadastrardispositivo.php">

<img

src="../imagens/cadastrar_dispositivo.png" alt="Cadastrar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrardispositivo.php" title="Cadastrar Dispositivo">

<span>Cadastrar

Dispositivo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="alterardispositivo.php">

<img

src="../imagens/alterar_dispositivo.png" alt="Alterar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterardispositivo.php" title="Alterar Dispositivo">

<span>Alterar

296

Dispositivo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="excluirdispositivo.php">

<img

src="../imagens/excluir_dispositivo.png" alt="Excluir Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirdispositivo.php" title="Excluir Dispositivo">

<span>Excluir

Dispositivo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="index.php">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

297

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.7.5 Página verdispositivo.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

298

2013

@Nesta página, o usuário, através dum formulário, pode alterar os

dados do dispositivo selecionado.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

function checarForm() //Função p/ validar os dados

inseridos no form. Os dados obrigatórios são nome, ip e local

{

if(document.frmalterardispositivo.nome.value.length == 0)

{

299

alert("Informe o Nome.");

return false;

}

else

{

if(document.frmalterardispositivo.ip.value.length == 0)

{

alert("Informe o IP.");

return false;

}

else

{

if

(document.frmalterardispositivo.local.value.length == 0)

{

alert ("Informe o

Local.");

return false;

}

}

}

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio - Dispositivo

- Alterar Dispositivo</title>

</head>

300

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="index.php">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Alterar Dispositivo</h1>

<h4>Altere os dados desejados</h4>

<form name="frmalterardispositivo"

method="POST" action="../crud/alterar.php" onsubmit="return checarForm(); return

false;">

301

<input name="tipoform"

value="Alterar Dispositivo" type="hidden" />

<?php

if(isset($_POST['id'])) //Verifica se algum dispositivo foi selecionado

{

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa todos os dados do dispositivo selecionaod

$select->pesquisarDispositivoID($_POST['id']);

foreach($select->registro as $registro)

{

//Imprime form com os dados do dispositivo pesquisado

print ("<input name='id' id='id' type='hidden' value='$registro[id]' />

<label for='nome'>Nome:</label>

<input name='nome' type='text' id='nome' maxlength='30'

value='$registro[nome]' />

<br><br>

302

<label for='ip'>IP:</label>

<input name='ip' id='ip' type='text' maxlength='15' value='$registro[ip]'

/>

<br><br>

<label for='local'>Local:</label>

<input name='local' id='local' type='text' maxlength='30'

value='$registro[local]' />

<br><br>

<label for='tipodispositivo'>Tipo:</label>

<select name='tipodispositivo' id='tipodispositivo'>

<option value='$registro[tipo]'>Atual:$registro[tipo]</option>

<option value='Impressora'>Impressora</option>

<option value='Câmera'>C&acirc;mera</option>

<option value='Sensor'>Sensor</option>

<option value='Telefone'>VoIP</option>

<option value='Outro'>Outro</option>

</select>

<br><br>

303

<label for='status'>Status</label>

<select name='status' id='status'>

<option value='$registro[status]'>Atual:$registro[status]</option>

<option value='Ativo'>Ativo</option>

<option value='Inativo'>Inativo</option>

</select>

<br><br>");

}

print("<input name='Alterar' type='submit' value='Alterar' />

</form>");

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

else

{

print("</form>

304

<p>Nenhum Dispositivo foi selecionado.</p>");

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="cadastrardispositivo.php">

<img

src="../imagens/cadastrar_dispositivo.png" alt="Cadastrar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrardispositivo.php" title="Cadastrar Dispositivo">

<span>Cadastrar

Dispositivo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="alterardispositivo.php">

<img

src="../imagens/alterar_dispositivo.png" alt="Alterar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

305

onmouseout="this.className='portfolio-button'">

<a

href="alterardispositivo.php" title="Alterar Dispositivo">

<span>Alterar

Dispositivo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="excluirdispositivo.php">

<img

src="../imagens/excluir_dispositivo.png" alt="Excluir Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirdispositivo.php" title="Excluir Dispositivo">

<span>Excluir

Dispositivo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="index.php">Invent&aacute;rio</a></p></li>

306

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

307

15.2.7.6 Página excluirdispositivo.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, o usuário seleciona o dispositivo a ser excluído.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

308

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio -

Dispositivos - Excluir Dispositivo</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="index.php">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento/">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Excluir Dispositivo</h1>

309

<h4>Selecione o Dispositivo a ser

exclu&iacute;do</h4>

<form name="frmexcluirdispositivo"

method="POST" action="../crud/excluir.php">

<input name="tipoform"

value="Excluir Dispositivo" type="hidden" />

<h2>Dispositivos</h2>

<table>

<tr>

<td></td>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Tipo</td>

<td>Status</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa todos os

dispositivos

$select-

>pesquisarDispositivoTodos();

//Verifica se a consulta

retornou alguma coisa

310

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime todos os resultados

print ("<tr>

<td><input type='radio' name='id' value='$registros[id]' /></td>

<td>$registros[nome]</td>

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[tipo]</td>

<td>$registros[status]</td>

<tr>");

}

print("</table>

<input

name='Excluir' type='submit' value='Excluir' />

</form>");

}

else

{

print("</table>

311

</form>

<p>Nenhum

registro encontrado.</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="cadastrardispositivo.php">

<img

src="../imagens/cadastrar_dispositivo.png" alt="Cadastrar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrardispositivo.php" title="Cadastrar Dispositivo">

<span>Cadastrar

Dispositivo</span>

</a>

</div>

312

</div>

<div class="quarter-grid">

<a

href="alterardispositivo.php">

<img

src="../imagens/alterar_dispositivo.png" alt="Alterar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterardispositivo.php" title="Alterar Dispositivo">

<span>Alterar

Dispositivo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="excluirdispositivo.php">

<img

src="../imagens/excluir_dispositivo.png" alt="Excluir Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirdispositivo.php" title="Excluir Dispositivo">

<span>Excluir

Dispositivo</span>

</a>

</div>

313

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="index.php">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

314

</body>

</html>

15.2.7.7 Página noderede.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, são apresentadas as informações referentes aos

nós de rede.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

315

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio - N&oacute;s

de Rede</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="index.php">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento/">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

316

<div class="article-content">

<h2>N&oacute;s de Rede</h2>

<table>

<tr>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Tipo</td>

<td>Marca</td>

<td>Modelo</td>

<td>Freq</td>

<td>DBI</td>

<td>Status</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa por todos

nós de rede

$select-

>pesquisarNoderedeTodos();

//Verifica se a consulta

retornou alguma coisa

if($select->registro)

{

foreach ($select-

>registro as $registros)

317

{

//Imprime todos os resultados

print ("<tr>

<td>$registros[nome]</td>

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[tipo]</td>

<td>$registros[marca]</td>

<td>$registros[modelo]</td>

<td>$registros[freq]</td>

<td>$registros[dbi]</td>

<td>$registros[status]</td>

<tr>");

}

print("</table>");

}

else

{

print("</table>

318

<p>Nenhum

registro encontrado.</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<?php

//Verifica qual o perfil do Usuário ao acessar

esta página, alterando as opções apresentadas na seção de box. Cada macaco no

seu galho!

if($_SESSION['perfil'] === 'Administrador')

{

print('<div class="quarter-grid">

<a

href="cadastrarnoderede.php">

<img

src="../imagens/cadastrar_noderede.png" alt="Cadastrar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="cadastrarnoderede.php" title="Cadastrar N&oacute; de Rede">

<span>Cadastrar

319

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="alterarnoderede.php">

<img

src="../imagens/alterar_noderede.png" alt="Alterar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="alterarnoderede.php" title="Alterar N&oacute; de Rede">

<span>Alterar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="excluirnoderede.php">

<img

src="../imagens/excluir_noderede.png" alt="Excluir N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="excluirnoderede.php" title="Excluir N&oacute; de Rede">

<span>Excluir

320

N&oacute; de Rede</span>

</a>

</div>

</div>');

}

else

{

print('

<div class="quarter-grid">

<a href="estacoes.php">

<img

src="../imagens/estacao.png" alt="Esta&ccedil;&otilde;es">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a href="estacoes.php"

title="Esta&ccedil;&otilde;es">

<span>Esta&ccedil;&otilde;es</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="noderede.php">

<img

src="../imagens/noderede.png" alt="N&oacute;s de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a href="noderede.php"

321

title="N&oacute;s de Rede">

<span>N&oacute;s de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="dispositivos.php">

<img

src="../imagens/dispositivo.png" alt="Dispositivos">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="dispositivos.php" title="Dispositivos">

<span>Dispositivos</span>

</a>

</div>

</div>

');

}

?>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="index.php">Invent&aacute;rio</a></p></li>

322

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.7.8 Página alterarnoderede.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

323

2013

@Nesta página, o usuário seleciona qual nó de rede quer alterar e é

levado p/ a página de alteração.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio - N&oacute;

de Rede - Alterar N&oacute; de Rede</title>

324

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="index.php">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Alterar N&oacute; de Rede</h1>

<h4>Selecione o N&oacute; de Rede

a ser alterado</h4>

<form name="frmalterarnoderede"

325

method="POST" action="vernoderede.php">

<table>

<tr>

<td></td>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Tipo</td>

<td>Marca</td>

<td>Modelo</td>

<td>Freq</td>

<td>DBI</td>

<td>Status</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa por todas

nós de rede

$select-

>pesquisarNoderedeTodos();

//Verifica se retornou

alguma coisa

if($select->registro)

{

foreach ($select-

326

>registro as $registros)

{

//Lista

todos os resultados

print ("<tr>

<td><input type='radio' name='id'

value='$registros[id]'></input></td>

<td>$registros[nome]</td>

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[tipo]</td>

<td>$registros[marca]</td>

<td>$registros[modelo]</td>

<td>$registros[freq]</td>

<td>$registros[dbi]</td>

<td>$registros[status]</td>

<tr>");

}

print("</table>

<input

name='Alterar' type='submit' value='Alterar'></input>

327

</form>");

}

else

{

print("</table>

</form>

<p>Nenhum

registro encontrado.</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="cadastrarnoderede.php">

<img

src="../imagens/cadastrar_noderede.png" alt="Cadastrar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrarnoderede.php" title="Cadastrar N&oacute; de Rede">

328

<span>Cadastrar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="alterarnoderede.php">

<img

src="../imagens/alterar_noderede.png" alt="Alterar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterarnoderede.php" title="Alterar N&oacute; de Rede">

<span>Alterar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="excluirnoderede.php">

<img

src="../imagens/excluir_noderede.png" alt="Excluir N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirnoderede.php" title="Excluir N&oacute; de Rede">

329

<span>Excluir

N&oacute; de Rede</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="index.php">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

330

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.7.9 Página vernoderede.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, o usuário, através dum formulário, pode alterar os

dados do nó de rede selecionado.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

331

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

function checarForm() //Função p/ validar os dados

inseridos no form. Os dados obrigatórios são nome, ip e local

{

if(document.frmalterarnoderede.nome.value.length == 0)

{

alert("Informe o Nome.");

return false;

}

else

{

if(document.frmalterarnoderede.ip.value.length == 0)

{

alert("Informe o IP.");

return false;

}

else

{

if

(document.frmalterarnoderede.local.value.length == 0)

{

alert ("Informe o

332

Local.");

return false;

}

}

}

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio - Alterar

N&oacute; de Rede</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="index.php">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento">Monitoramento</a></li>

<li><a

333

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Alterar N&oacute; de Rede</h1>

<h4>Altere os dados desejados</h4>

<form name="frmalterarnoderede"

method="POST" action="../crud/alterar.php" onsubmit="return checarForm(); return

false;">

<input name="tipoform"

value="Alterar No de Rede" type="hidden" />

<?php

if(isset($_POST['id'])) //Verifica se algum nó de rede foi selecionado

{

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa todas as informações do nó de rede selecionado

$select->pesquisarNoderedeID($_POST['id']);

334

foreach($select->registro as $registro)

{

//Imprime form com os dados obtidos na consulta

print ("

<input name='id'

id='id' value='$registro[id]' type='hidden' />

<br><br>

<label

for='nome'>Nome:</label>

<input

name='nome' type='text' id='nome' maxlength='30' value='$registro[nome]' />

<br><br>

<label

for='ip'>IP:</label>

<input name='ip'

id='ip' type='text' maxlength='15' value='$registro[ip]' />

<br><br>

<label

for='local'>Local:</label>

<input

name='local' id='local' type='text' maxlength='30' value='$registro[local]' />

<br><br>

<label

for='tipono'>Tipo</label>

<select

name='tipono' id='tipono'>

<option value='$registro[tipo]'>Atual: $registro[tipo]</option>

<option value='Roteador'>Roteador</option>

335

<option value='Switch'>Switch</option>

<option value='Hub'>Hub</option>

<option value='Bridge'>Bridge</option>

</select>

<br></br>

<label

for='marca'>Marca</label>

<select

name='marca' id='marca'>

<option value='$registro[marca]'>$registro[marca]</option>

<option value='Cisco'>Cisco</option>

<option value='Linksys'>LinkSys</option>

<option value='D-Link'>D-Link</option>

<option value='TP-Link'>TP-Link</option>

</select>

<br></br>

<label

for='modelo'>Modelo:</label>

<input

name='modelo' id='modelo' type='text' maxlength='15' value='$registro[modelo]' />

<br><br>

<label

for='freq'>Frequ&ecirc;ncia</label>

<select

name='freq' id='freq'>

336

<option value='$registro[freq]'>Atual: $registro[freq]</option>

<option value='5Mhz'>5Mhz</option>

<option value='7Mhz'>7Mhz</option>

<option value='10Mhz'>10Mhz</option>

<option value='12Mhz'>12Mhz</option>

<option value='15Mhz'>15Mhz</option>

<option value='20Mhz'>20Mhz</option>

</select>

<br></br>

<label

for='dbi'>DBI:</label>

<select

name='dbi' id='dbi'>

<option value='$registro[dbi]'>Atual: $registro[dbi]</option>

<option value='2DBI'>2DBI</option>

<option value='4DBI'>4DBI</option>

<option value='6DBI'>6DBI</option>

<option value='8DBI'>8DBI</option>

<option value='10DBI'>10DBI</option>

<option value='12DBI'>12DBI</option>

337

<option value='15DBI'>15DBI</option>

</select>

<br></br>

<label

for='status'>Status</label>

<select

name='status' id='status'>

<option

value='$registro[status]'>Atual: $registro[status]</option>

<option

value='Ativo'>Ativo</option>

<option

value='Inativo'>Inativo</option>

</select>

<br><br>");

}

print("<input name='alterar' type='submit' value='Alterar' /></form>");

}

catch

(Exception $e)

{

echo "Erro: " . $getMessage();

}

}

else

{

338

print("</form>

<p>Nenhum N&oacute; de Rede foi selecionado.</p>");

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="cadastrarnoderede.php">

<img

src="../imagens/cadastrar_noderede.png" alt="Cadastrar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrarnoderede.php" title="Cadastrar N&oacute; de Rede">

<span>Cadastrar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="alterarnoderede.php">

<img

src="../imagens/alterar_noderede.png" alt="Alterar N&oacute; de Rede">

</a>

<div class="portfolio-button"

339

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterarnoderede.php" title="Alterar N&oacute; de Rede">

<span>Alterar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="excluirnoderede.php">

<img

src="../imagens/excluir_noderede.png" alt="Excluir N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirnoderede.php" title="Excluir N&oacute; de Rede">

<span>Excluir

N&oacute; de Rede</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

340

href="index.php">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

341

15.2.7.10 Página excluirnoderede.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, o usuário seleciona o nó de rede a ser excluído.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

342

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio - N&oacute;

de Rede - Excluir N&oacute; de Rede</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="index.php">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

343

<h1>Excluir N&oacute; de

Rede</h1>

<h4>Selecione o N&oacute; de Rede

a ser exclu&iacute;do</h4>

<form name="frmexcluirnoderede"

method="POST" action="../crud/excluir.php">

<input name="tipoform"

value="Excluir No de Rede" type="hidden"></input>

<table>

<tr>

<td></td>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Tipo</td>

<td>Marca</td>

<td>Modelo</td>

<td>Freq</td>

<td>DBI</td>

<td>Status</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa por todos os

nós de rede

344

$select-

>pesquisarNoderedeTodos();

//Verifica se retorou

algum resultado

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime todos os resultados

print ("<tr>

<td><input type='radio' name='id'

value='$registros[id]'></input></td>

<td>$registros[nome]</td>

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[tipo]</td>

<td>$registros[marca]</td>

<td>$registros[modelo]</td>

<td>$registros[freq]</td>

<td>$registros[dbi]</td>

345

<td>$registros[status]</td>

<tr>");

}

print("</table>

<input

name='excluir' type='submit' value='Excluir'></input>

</form>");

}

else

{

print("</table>

</form>

<p>Nenhum

registro encontrado.</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="cadastrarnoderede.php">

346

<img

src="../imagens/cadastrar_noderede.png" alt="Cadastrar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrarnoderede.php" title="Cadastrar N&oacute; de Rede">

<span>Cadastrar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="alterarnoderede.php">

<img

src="../imagens/alterar_noderede.png" alt="Alterar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterarnoderede.php" title="Alterar N&oacute; de Rede">

<span>Alterar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="excluirnoderede.php">

347

<img

src="../imagens/excluir_noderede.png" alt="Excluir N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirnoderede.php" title="Excluir N&oacute; de Rede">

<span>Excluir

N&oacute; de Rede</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="index.php">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

348

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.7.11 Página cadastrarnoderede.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, o usuário, através do formulário, cadastra um novo

nó de rede.

*/

session_start();

?>

<!DOCTYPE html>

349

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

function checarForm() //Função p/ validar os dados

inseridos no form. Os dados obrigatórios são nome, ip, local e status

{

if(document.frmcadastrarnoderede.nome.value.length == 0)

{

alert("Informe o Nome.");

return false;

}

else

{

if(document.frmcadastrarnoderede.ip.value.length == 0)

{

alert("Informe o IP.");

return false;

350

}

else

{

if

(document.frmcadastrarnoderede.local.value.length == 0)

{

alert ("Informe o

Local.");

return false;

}

else

{

if(document.frmcadastrarnoderede.status.selectedIndex == 0)

{

alert("Selecione

um Status.");

return false;

}

}

}

}

}

</script>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio - Cadastrar N&oacute; de

Rede</title>

</head>

<body>

351

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-icon="P" aria-

hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#" onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a href="index.php">Invent&aacute;rio</a></li>

<li><a href="../monitoramento">Monitoramento</a></li>

<li><a href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Cadastrar N&oacute; de Rede</h1>

<form id="frmcadastrarnoderede"

name="frmcadastrarnoderede" method="POST" action="../crud/cadastrar.php"

onsubmit="return checarForm(); return false;">

<input name="tipoform" id="tipo"

value="Cadastrar No de Rede" type="hidden" />

<label for="nome">Nome:</label>

<input name="nome" type="text" id="nome"

maxlength="30" tabindex="1" />

<br><br>

<label for="ip">Endere&ccedil;o IP:</label>

<input name="ip" type="text" id="ip"

maxlength="15" tabindex="2" />

352

<br><br>

<label for="local">Local:</label>

<input name="local" type="text" id="local"

maxlength="30" tabindex="3" />

<br><br>

<label for="tipono">Tipo</label>

<select name="tipono" id="tipono">

<option value="-------

">Selecione...</option>

<option

value="Roteador">Roteador</option>

<option

value="Switch">Switch</option>

<option

value="Hub">Hub</option>

<option

value="Bridge">Bridge</option>

</select>

<br></br>

<label for="marca">Marca</label>

<select name="marca" id="marca">

<option value="-------

">Selecione...</option>

<option

value="Cisco">Cisco</option>

<option

value="Linksys">LinkSys</option>

<option value="D-Link">D-

Link</option>

<option value="TP-Link">TP-

Link</option>

</select>

<br></br>

<label for="modelo">Modelo: </label>

353

<input name="modelo" id="modelo"

type="text" maxlength="15" />

<br><br>

<label

for="frequencia">Frequ&ecirc;ncia</label>

<select name="frequencia" id="frequencia">

<option value="-------

">Selecione...</option>

<option

value="5Mhz">5Mhz</option>

<option

value="7Mhz">7Mhz</option>

<option

value="10Mhz">10Mhz</option>

<option

value="12Mhz">12Mhz</option>

<option

value="15Mhz">15Mhz</option>

<option

value="20Mhz">20Mhz</option>

</select>

<br></br>

<label for="dbi">DBI</label>

<select name="dbi" id="dbi">

<option value="-------

">Selecione...</option>

<option

value="2DBI">2DBI</option>

<option

value="4DBI">4DBI</option>

<option

value="6DBI">6DBI</option>

<option

value="8DBI">8DBI</option>

354

<option

value="10DBI">10DBI</option>

<option

value="12DBI">12DBI</option>

<option

value="15DBI">15DBI</option>

</select>

<br></br>

<label for="status">Status</label>

<select name="status" id="status">

<option value="-------

">Selecione...</option>

<option

value="Ativo">Ativo</option>

<option

value="Inativo">Inativo</option>

</select>

<br></br>

<input name="cadastrar" type="submit"

id="cadastrar" value="Cadastrar" tabindex="9" />

<input name="limpar" type="reset"

id="limpar" value="Limpar" tabindex="10" />

</form>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="cadastrarnoderede.php">

<img

src="../imagens/cadastrar_noderede.png" alt="Cadastrar N&oacute; de Rede">

</a>

355

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrarnoderede.php" title="Cadastrar N&oacute; de Rede">

<span>Cadastrar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="alterarnoderede.php">

<img

src="../imagens/alterar_noderede.png" alt="Alterar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterarnoderede.php" title="Alterar N&oacute; de Rede">

<span>Alterar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="excluirnoderede.php">

<img

src="../imagens/excluir_noderede.png" alt="Excluir N&oacute; de Rede">

</a>

356

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirnoderede.php" title="Excluir N&oacute; de Rede">

<span>Excluir

N&oacute; de Rede</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="index.php">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

357

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.7.12 Página estacoes.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, são apresentadas as informações referentes às

estações.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

358

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio -

Esta&ccedil;&otilde;es</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

359

href="index.php">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento/">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Esta&ccedil;&otilde;es</h1>

<table>

<tr>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>SO</td>

<td>HD</td>

<td>CPU</td>

<td>RAM</td>

<td>Status</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

360

//Pesquisa por todas as

estações

$select-

>pesquisarEstacaoTodos();

//Verifica se a pesquisa

retornou alguma coisa

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime

todos os resultados

print ("<tr>

<td>$registros[nome]</td>

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[so]</td>

<td>$registros[hd]</td>

<td>$registros[cpu]</td>

<td>$registros[ram]</td>

<td>$registros[status]</td>

<tr>");

361

}

print("</table>");

}

else

{

print("</table>

</form>

<p>Nenhum

registro encontrado.</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<?php

//Verifica qual o perfil do Usuário ao acessar

esta página, alterando as opções apresentadas na seção de box. Cada macaco no

seu galho!

if($_SESSION['perfil'] === 'Administrador')

{

print('<div class="quarter-grid">

<a

362

href="cadastrarestacao.php">

<img

src="../imagens/cadastrar_estacao.png" alt="Cadastrar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="cadastrarestacao.php" title="Cadastrar Esta&ccedil;&atilde;o">

<span>Cadastrar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="alterarestacao.php">

<img

src="../imagens/alterar_estacao.png" alt="Alterar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="alterarestacao.php" title="Alterar Esta&ccedil;&atilde;o">

<span>Alterar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirestacao.php">

<img

363

src="../imagens/excluir_estacao.png" alt="Excluir Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="excluirestacao.php" title="Excluir Esta&ccedil;&atilde;o">

<span>Excluir

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

');

}

else

{

print('

<div class="quarter-grid">

<a href="estacoes.php">

<img

src="../imagens/estacao.png" alt="Esta&ccedil;&otilde;es">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a href="estacoes.php"

title="Esta&ccedil;&otilde;es">

<span>Esta&ccedil;&otilde;es</span>

</a>

</div>

</div>

364

<div class="quarter-grid">

<a href="noderede.php">

<img

src="../imagens/noderede.png" alt="N&oacute;s de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a href="noderede.php"

title="N&oacute;s de Rede">

<span>N&oacute;s de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="dispositivos.php">

<img

src="../imagens/dispositivo.png" alt="Dispositivos">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="dispositivos.php" title="Dispositivos">

<span>Dispositivos</span>

</a>

</div>

</div>

');

}

365

?>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="index.php">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

366

</html>

15.2.7.13 Página cadastrarestacao.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, o usuário, através do formulário, cadastra uma nova

estação.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

367

function checarForm() //Função p/ validar os dados

inseridos no form. Os dados obrigatórios são nome, ip, local e status

{

if(document.frmcadastrarestacao.nome.value.length == 0)

{

alert("Informe o Nome.");

return false;

}

else

{

if(document.frmcadastrarestacao.ip.value.length == 0)

{

alert("Informe o IP.");

return false;

}

else

{

if

(document.frmcadastrarestacao.local.value.length == 0)

{

alert ("Informe o

Local.");

return false;

}

else

{

if(document.frmcadastrarestacao.status.selectedIndex == 0)

368

{

alert("Selecione

um Status.");

return false;

}

}

}

}

}

</script>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio - Cadastrar

Esta&ccedil;&atilde;o</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-icon="P" aria-

hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#" onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a href="index.php">Invent&aacute;rio</a></li>

<li><a href="../monitoramento">Monitoramento</a></li>

<li><a href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

369

</header>

<article class="center-column">

<div class="article-content">

<h1>Cadastrar Esta&ccedil;&atilde;o</h1>

<form id="frmcadastrarestacao"

name="frmcadastrarestacao" method="POST" action="../crud/cadastrar.php"

onsubmit="return checarForm(); return false;">

<input name="tipoform" value ="Cadastrar

Estacao" type="hidden" />

<label for="nome">Nome:</label>

<input name="nome" type="text" id="nome"

maxlength="30" tabindex="1" />

<br><br>

<label for="ip">Endere&ccedil;o IP:</label>

<input name="ip" type="text" id="ip"

maxlength="15" tabindex="2" />

<br><br>

<label for="local">Local:</label>

<input name="local" type="text" id="local"

maxlength="30" tabindex="3" />

<br><br>

<label for="cpu">Processador: </label>

<input name="cpu" id="cpu" type="text"

maxlength="15" tabindex="7" />

<br></br>

<label for="so">Sistema

Operacional</label>

<select name="so" id="so">

<option value="-------

">Selecione...</option>

<option value="Windows

370

XP">Windows XP</option>

<option value="Windows

7">Windows 7</option>

<option value="Windows

8">Windows 8</option>

<option value="Windows

Server">Windows Server</option>

<option

value="Ubuntu">Ubuntu</option>

<option

value="Debian">Debian</option>

<option

value="Slackware">Slackware</option>

<option

value="Solaris">Solaris</option>

<option value="MAC OS">Mac

OS</option>

<option

value="Backtrack">Backtrack</option>

</select>

<br></br>

<label for="hd">Disco R&iacute;gido</label>

<select name="hd" id="hd">

<option value="-------

">Selecione...</option>

<option

value="80GB">80GB</option>

<option

value="120GB">120GB</option>

<option

value="320GB">320GB</option>

<option

value="500GB">500GB</option>

<option

371

value="1TB">1TB</option>

<option

value="2TB">2TB</option>

</select>

<br><br>

<label for="ram">Mem&oacute;ria

RAM</label>

<select name="ram" id="ram">

<option value="-------

">Selecione...</option>

<option

value="256MB">256MB</option>

<option

value="512MB">512MB</option>

<option

value="1GB">1GB</option>

<option

value="2GB">2GB</option>

<option

value="4GB">4GB</option>

<option

value="8GB">8GB</option>

<option

value="1TB">1TB</option>

</select>

<br></br>

<label for="status">Status</label>

<select name="status" id="status">

<option value="-------

">Selecione...</option>

<option

value="Ativo">Ativo</option>

<option

value="Inativo">Inativo</option>

372

</select>

<br><br>

<input name="cadastrar" type="submit"

id="cadastrar" value="Cadastrar" tabindex="9" />

<input name="limpar" type="reset"

id="limpar" value="Limpar" tabindex="10" />

</form>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="cadastrarestacao.php">

<img

src="../imagens/cadastrar_estacao.png" alt="Cadastrar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrarestacao.php" title="Cadastrar Esta&ccedil;&atilde;o">

<span>Cadastrar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="alterarestacao.php">

<img

src="../imagens/alterar_estacao.png" alt="Alterar Esta&ccedil;&atilde;o">

</a>

373

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterarestacao.php" title="Alterar Esta&ccedil;&atilde;o">

<span>Alterar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirestacao.php">

<img

src="../imagens/excluir_estacao.png" alt="Excluir Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirestacao.php" title="Excluir Esta&ccedil;&atilde;o">

<span>Excluir

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

374

href="index.php">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

375

15.2.7.14 Página alterarestacao.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, o usuário seleciona qual estação quer alterar e é

levado p/ a página de alteração.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

376

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio -

Esta&ccedil;&atilde;o - Alterar Esta&ccedil;&atilde;o</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="index.php">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

377

<article class="center-column">

<div class="article-content">

<h1>Alterar

Esta&ccedil;&atilde;o</h1>

<h4>Escolha a Esta&ccedil;&atilde;o

a ser alterada</h4>

<form name="frmalterarestacao"

method="POST" action="verestacao.php">

<table>

<tr>

<td></td>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>SO</td>

<td>HD</td>

<td>CPU</td>

<td>RAM</td>

<td>Status</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa por todas as

estações

$select-

378

>pesquisarEstacaoTodos();

//Verifica se a consulta

retornou alguma coisa

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Lista

todos os resultados

print ("<tr>

<td><input type='radio' name='id'

value='$registros[id]'></input></td>

<td>$registros[nome]</td>

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[so]</td>

<td>$registros[hd]</td>

<td>$registros[cpu]</td>

<td>$registros[ram]</td>

<td>$registros[status]</td>

<tr>");

379

}

print("</table>

<input name='Alterar' type='submit' value='Alterar'></input>

</form>");

}

else

{

print("</table>

</form>

<p>Nenhum

registro encontrado.</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="cadastrarestacao.php">

<img

src="../imagens/cadastrar_estacao.png" alt="Cadastrar Esta&ccedil;&atilde;o">

</a>

380

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrarestacao.php" title="Cadastrar Esta&ccedil;&atilde;o">

<span>Cadastrar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="alterarestacao.php">

<img

src="../imagens/alterar_estacao.png" alt="Alterar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterarestacao.php" title="Alterar Esta&ccedil;&atilde;o">

<span>Alterar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirestacao.php">

<img

src="../imagens/excluir_estacao.png" alt="Excluir Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

381

onmouseout="this.className='portfolio-button'">

<a

href="excluirestacao.php" title="Excluir Esta&ccedil;&atilde;o">

<span>Excluir

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="index.php">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

382

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.7.15 Página verestacao.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, o usuário, através dum formulário, pode alterar os

dados da estação selecionada.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

383

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

function checarForm() //Função p/ validar os dados

inseridos no form. Os dados obrigatórios são nome, ip e local

{

if(document.frmalterarestacao.nome.value.length == 0)

{

alert("Informe o Nome.");

return false;

}

else

{

if(document.frmalterarestacao.ip.value.length == 0)

{

alert("Informe o IP.");

return false;

}

else

{

if

(document.frmalterarestacao.local.value.length == 0)

384

{

alert ("Informe o

Local.");

return false;

}

}

}

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio - Cadastrar

Esta&ccedil;&atilde;o</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="index.php">Invent&aacute;rio</a></li>

<li><a

385

href="../monitoramento">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Alterar

Esta&ccedil;&atilde;o</h1>

<h4>Altere os dados desejados</h4>

<form name="frmalterarestacao"

method="POST" action="../crud/alterar.php" onsubmit="return checarForm(); return

false;">

<input name="tipoform"

value="Alterar Estacao" type="hidden" />

<?php

if(isset($_POST['id'])) //Verifica se alguma estação foi selecionada

{

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

386

//Pesquisar todas as informações da estação selecionada

$select->pesquisarEstacaoID($_POST['id']);

foreach($select->registro as $registro)

{

//Imprime form com os dados da estação selecionada

print ("

<input name='id' id='id' value='$registro[id]' type='hidden' />

<br><br>

<label for='nome'>Nome:</label>

<input name='nome' type='text' id='nome' maxlength='30'

value='$registro[nome]' />

<br><br>

<label for='telefone'>IP:</label>

<input name='ip' id='ip' type='text' maxlength='15'

value='$registro[ip]' />

<br><br>

<label for='local'>Local:</label>

<input name='local' id='local' type='text' maxlength='30'

387

value='$registro[local]' />

<br><br>

<label for='cpu'>Processador:</label>

<input name='cpu' id='cpu' type='text' maxlength='15'

value='$registro[cpu]' />

<br><br>

<label for='so'>Sistema Operacional</label>

<select name='so' id='so'>

<option value='$registro[so]'>Atual: $registro[so]</option>

<option value='Windows XP'>Windows XP</option>

<option value='Windows 7'>Windows 7</option>

<option value='Windows 8'>Windows 8</option>

<option value='Windows Server'>Windows

Server</option>

<option value='Ubuntu'>Ubuntu</option>

<option value='Debian'>Debian</option>

<option value='Slackware'>Slackware</option>

<option value='Solaris'>Solaris</option>

388

<option value='Mac OS'>Mac OS</option>

<option value='Backtrack'>Backtrack</option>

</select>

<br><br>

<label for='hd'>Disco R&iacute;gido</label>

<select name='hd' id='hd'>

<option value='$registro[hd]'>Atual:

$registro[hd]</option>

<option value='80GB'>80GB</option>

<option value='120GB'>120GB</option>

<option value='320GB'>320GB</option>

<option value='500GB'>500GB</option>

<option value='1TB'>1TB</option>

<option value='2TB'>2TB</option>

</select>

<br><br>

<label for='ram'>Mem&oacute;ria RAM:</label>

<select name='ram' id='ram'>

389

<option value='$registro[ram]'>Atual:

$registro[ram]</option>

<option value='256MB'>256MB</option>

<option value='512MB'>512MB</option>

<option value='1GB'>1GB</option>

<option value='2GB'>2GB</option>

<option value='4GB'>4GB</option>

<option value='8GB'>8GB</option>

<option value='1TB'>1TB</option>

</select>

<br></br>

<label for='status'>Status</label>

<select name='status' id='status'>

<option value='$registro[status]'>Atual:

$registro[status]</option>

<option value='Ativo'>Ativo</option>

<option value='Inativo'>Inativo</option>

</select>

390

<br><br>");

}

print("<input name='alterar' type='submit' value='Alterar' /></form>");

}

catch(Exception $e)

{

echo "Erro: " . $e->getMessage();

}

}

else

{

print("</form>

<p>Nenhuma Esta&ccedil;&atilde;o foi selecionada.</p>");

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="cadastrarestacao.php">

<img

391

src="../imagens/cadastrar_estacao.png" alt="Cadastrar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrarestacao.php" title="Cadastrar Esta&ccedil;&atilde;o">

<span>Cadastrar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="alterarestacao.php">

<img

src="../imagens/alterar_estacao.png" alt="Alterar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterarestacao.php" title="Alterar Esta&ccedil;&atilde;o">

<span>Alterar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirestacao.php">

<img

src="../imagens/excluir_estacao.png" alt="Excluir Esta&ccedil;&atilde;o">

</a>

392

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirestacao.php" title="Excluir Esta&ccedil;&atilde;o">

<span>Excluir

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="index.php">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

393

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.7.16 Página excluirestacao.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, o usuário seleciona a estação a ser excluída.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

394

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Invent&aacute;rio -

Esta&ccedil;&atilde;o - Excluir Esta&ccedil;&atilde;o</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

395

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="index.php">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Excluir

Esta&ccedil;&atilde;o</h1>

<h4>Selecione a

Esta&ccedil;&atilde;o a ser exclu&iacute;da</h4>

<form name="frmexcluirestacao"

method="POST" action="../crud/excluir.php">

<input name="tipoform"

value="Excluir Estacao" type="hidden"></input>

<table>

<tr>

<td></td>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

396

<td>SO</td>

<td>HD</td>

<td>CPU</td>

<td>RAM</td>

<td>Status</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa todas as

estações

$select-

>pesquisarEstacaoTodos();

//Verifica se retornou

alguma coisa

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime todos os resultados

print ("<tr>

<td><input type='radio' name='id'

value='$registros[id]'></input></td>

397

<td>$registros[nome]</td>

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[so]</td>

<td>$registros[hd]</td>

<td>$registros[cpu]</td>

<td>$registros[ram]</td>

<td>$registros[status]</td>

<tr>");

}

print("</table>

<input

name='Excluir' type='submit' value='Excluir'></input>

</form>");

}

else

{

print("</table>

</form>

<p>Nenhum

registro encontrado</p>");

}

398

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="cadastrarestacao.php">

<img

src="../imagens/cadastrar_estacao.png" alt="Cadastrar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrarestacao.php" title="Cadastrar Esta&ccedil;&atilde;o">

<span>Cadastrar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="alterarestacao.php">

<img

src="../imagens/alterar_estacao.png" alt="Alterar Esta&ccedil;&atilde;o">

399

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterarestacao.php" title="Alterar Esta&ccedil;&atilde;o">

<span>Alterar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirestacao.php">

<img

src="../imagens/excluir_estacao.png" alt="Excluir Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirestacao.php" title="Excluir Esta&ccedil;&atilde;o">

<span>Excluir

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

400

href="index.php">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

401

15.2.8 ADMINISTRAÇÃO

15.2.8.1 Página index.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Página inicial da Administração, apresenta alguns dados

referentes à administração e lista as opções conforme o perfi do usuário logado..

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

402

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP -

Administra&ccedil;&atilde;o</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento">Monitoramento</a></li>

<li><a

href="index.php">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

403

<div class="article-content">

<h1>Administra&ccedil;&atilde;o</h1>

<?php

require_once('../crud/pesquisar.class.php');

$select = new Select();

//Faz várias pesquisar p/ apresentar

alguns dados sobre os usuários cadastrados no sistema

$select->pesquisarQuantUsuario();

print('<p>Quantidade de

Usu&aacute;rios cadastrados:<b> '.$select->registro[0][0].'</b></p>');

$select-

>pesquisarQuantAdministrador();

print('<p>Quantidade de

Usu&aacute;rios com perfil Administrador:<b> '.$select->registro[0][0].'</b></p>');

$select->pesquisarQuantOperador();

print('<p>Quantidade de

Usu&aacute;rios com perfil Operador:<b> '.$select->registro[0][0].'</b></p>');

print("<p>Para ver mais

informa&ccedil;&otilde;es sobre os usu&aacute;rios,

clique em <a

href='../relatorio/relat_usuario.php'>Relat&oacute;rios de Usu&aacute;rio</a>.</p>");

404

//Agora vamos buscar todos os

usuários do sistema

$select->pesquisarUsuarioTodos();

print ("<h3>Usu&aacute;rios</h3>

<table>

<tr>

<td>Nome</td>

<td>Perfil</td>

<td>Email</td>

<td>Telefone</td>

</tr>");

if($select->registro)

{

//Lista todos os usuários

foreach ($select-

>registro as $usuario)

{

print ("<tr>

<td>$usuario[nome]</td>

<td>$usuario[perfil]</td>

<td>$usuario[email]</td>

<td>$usuario[telefone]</td>

</tr>");

}

print("</table>");

405

}

else

{

print("</table>

<p>N&atilde;o h&aacute;

usu&aacute;rios cadastrados</p>");

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<?php

//Verifica qual o perfil do Usuário ao acessar

esta página, alterando as opções apresentadas na seção de box. Cada macaco no

seu galho!

if($_SESSION['perfil'] === 'Administrador')

{

print('

<div id="quarter-grid" class="quarter-grid">

<a

href="cadastrarusuario.php">

<img

src="../imagens/cadastrar_usuario.png" alt="Cadastrar Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

406

href="cadastrarusuario.php" title="Cadastrar Usu&aacute;rio">

<span>Cadastrar

Usu&aacute;rio</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="alterarusuario.php">

<img

src="../imagens/alterar_usuario.png" alt="Alterar Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="alterarusuario.php" title="Alterar Usu&aacute;rio">

<span>Alterar

Usu&aacute;rio</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirusuario.php">

<img

src="../imagens/excluir_usuario.png" alt="Excluir Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="excluirusuario.php" title="Excluir Usu&aacute;rio">

<span>Excluir

407

Usu&aacute;rio</span>

</a>

</div>

</div>');

}

else

{

print('<div class="quarter-grid">

<a href="meus_dados.php">

<img

src="../imagens/meus_dados.png" alt="Meus Dados">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="meus_dados.php" title="Meus Dados">

<span>Meus

Dados</span>

</a>

</div>

</div>');

}

?>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

408

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="index.php">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.8.2 Página cadastrarusuario.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

409

2013

@Nesta página, o usuário (Administrador), através dum formulário,

pode inserir novos usuários no sistema.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

function checarForm() //Função p/ validar dados do

formulário. Os dados obrigatórios são nome, perfil, login e senha (min.7 e max.15).

{

if(document.frmcadastrarusuario.nome.value.length == 0)

{

alert("Informe o Nome.");

410

return false;

}

else

{

if(document.frmcadastrarusuario.perfil.selectedIndex == 0)

{

alert("Selecione um perfil.");

return false;

}

else

{

if

(document.frmcadastrarusuario.login.value.length == 0)

{

alert ("Informe o login");

return false;

}

else

{

if

(document.frmcadastrarusuario.senha.value.length == 0)

{

alert ("Informe a

senha");

return false;

}

else

{

if

411

((document.frmcadastrarusuario.senha.value.length < 7) ||

(document.frmcadastrarusuario.senha.value.length > 15))

{

alert("A

senha deve ter no m\u00ednimo 07 caracteres e no m\u00e1ximo 15 caracteres.");

return

false;

}

}

}

}

}

}

function mascara(o,f) //As Funções abaixo realizam

a máscara p/ o telefone. Ex.:(XX) 9999-9999

{

v_obj=o

v_fun=f

setTimeout("execmascara()",1)

}

function execmascara()

{

v_obj.value=v_fun(v_obj.value)

}

function itelefone(v)

{

v=v.replace(/\D/g,"") //Remove

tudo o que não é dígito

v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca

parênteses em volta dos dois primeiros dígitos

v=v.replace(/(\d{4})(\d)/,"$1-$2") //Coloca

412

hífen entre o quarto e o quinto dígitos

return v

}

</script>

<meta http-equiv="Content-Type" content="text/html;

charset=utf-8">

<title>PinGO PHP - Administra&ccedil;&atilde;o |

Cadastrar Usu&aacute;rio</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario/">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento/">Monitoramento</a></li>

<li><a

href="index.php">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

413

</header>

<article class="center-column">

<div class="article-content">

<h2>Cadastrar Usu&aacute;rio</h2>

<form name="frmcadastrarusuario"

id="frmcadastrarusuario" method="POST" action="../crud/cadastrar.php"

onsubmit="return checarForm(); return false;">

<input name="tipoform"

value="Cadastrar Usuario" type='hidden' />

<label

for="nome">Nome:</label>

<input name="nome"

type="text" id="nome" maxlength="50" tabindex="1" />

<br><br>

<label

for="perfil">Perfil</label>

<select id="perfil"

name="perfil" tabindex="2">

<option value="--

-----">...</option>

<option

value="Administrador">Administrador</option>

<option

value="Operador">Operador</option>

</select>

<br></br>

<label

for="telefone">Telefone:</label>

<input name="telefone"

id="telefone" type="text" maxlength="15" tabindex="3"

onkeypress="mascara(this,itelefone)" />

<br><br>

<label

414

for="email">Email:</label>

<input name="email"

type="text" maxlength="50" tabindex="4" />

<br><br>

<label

for="login">Login:</label>

<input id="login"

name="login" type="text" maxlength="15" tabindex="5" />

<br></br>

<label

for="senha">Senha:</label>

<input id="senha"

name="senha" type="password" maxlength="15" tabindex="6" />

<br></br>

<input name="cadastrar"

type="submit" id="cadastrar" value="Cadastrar" tabindex="7" />

<input name="limpar"

type="reset" id="limpar" value="Limpar" tabindex="8" />

</form>

</div>

</article>

<section class="portfolio-grid clear">

<div id="quarter-grid" class="quarter-grid">

<a

href="cadastrarusuario.php">

<img

src="../imagens/cadastrar_usuario.png" alt="Cadastrar Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrarusuario.php" title="Cadastrar Usu&aacute;rio">

415

<span>Cadastrar

Usu&aacute;rio</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="alterarusuario.php">

<img

src="../imagens/alterar_usuario.png" alt="Alterar Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterarusuario.php" title="Alterar Usu&aacute;rio">

<span>Alterar

Usu&aacute;rio</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirusuario.php">

<img

src="../imagens/excluir_usuario.png" alt="Excluir Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirusuario.php" title="Excluir Usu&aacute;rio">

<span>Excluir

Usu&aacute;rio</span>

416

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="index.php">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

417

</body>

</html>

15.2.8.3 Página alterarusuario.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, o usuário (Administrador) escolhe qual usuário ele

deseja alterar. Obs.: O usuário logado não pode se auto-escolher via essa página,

para isso, ele deve ir em 'Meus Dados'.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

418

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Administra&ccedil;&atilde;o |

Alterar Usu&aacute;rio</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario/">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento/">Monitoramento</a></li>

<li><a

href="index.php">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

419

<article class="center-column">

<div class="article-content">

<h2>Alterar Usu&aacute;rio</h2>

<h4>Escolha o usu&aacute;rio a ser

alterado</h4>

<form name="frmalterarusuario"

method="POST" action="verusuario.php">

<table>

<tr>

<td></td>

<td>Nome</td>

<td>Perfil</td>

<td>Email</td>

<td>Telefone</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisar todos os usuários, menos o que está logado.

//O usuário logado só pode alterar seus dados na página

'meus_dados.php

420

$select->pesquisarUsuarioTodosExceto($_SESSION['id']);

if($select->registro)

{

//Lista todos os usuários, exceto o usuário já logado.

foreach ($select->registro as $registros)

{

print ("<tr>

<td><input type='radio' id='idusuario'

name='idusuario' value='$registros[idusuario]' /></td>

<td>$registros[nome]</td>

<td>$registros[perfil]</td>

<td>$registros[email]</td>

<td>$registros[telefone]</td>

</tr>");

}

421

print("</table>

<input name='alterar' type='submit' value='Alterar' />

</form>");

}

else

{

print("</table>

</form>

<p>Nenhum registro encontrado.</p>");

}

}

catch

(Exception $erro)

{

echo "Erro:" . $erro->getMessage();

}

?>

</div>

</article>

422

<section class="portfolio-grid clear">

<div id="quarter-grid" class="quarter-grid">

<a

href="cadastrarusuario.php">

<img

src="../imagens/cadastrar_usuario.png" alt="Cadastrar Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrarusuario.php" title="Cadastrar Usu&aacute;rio">

<span>Cadastrar

Usu&aacute;rio</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="alterarusuario.php">

<img

src="../imagens/alterar_usuario.png" alt="Alterar Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterarusuario.php" title="Alterar Usu&aacute;rio">

<span>Alterar

Usu&aacute;rio</span>

</a>

</div>

</div>

423

<div class="quarter-grid">

<a href="excluirusuario.php">

<img

src="../imagens/excluir_usuario.png" alt="Excluir Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirusuario.php" title="Excluir Usu&aacute;rio">

<span>Excluir

Usu&aacute;rio</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="index.php">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

424

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.8.4 Página verusuario.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, o usuário (Administrador) informa os novos dados p/

o usuário selecionado. Obs.: O usuário logado não pode alterar seus dados via essa

página,

para isso, ele deve ir em 'Meus Dados'.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

425

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

function checarForm() //Função p/ validar os dados

do informados no formulário. Os dados obrigatórios nesta página é somente o nome.

{

if(document.frmalterarusuario.nome.value.length == 0)

{

alert("Informe o Nome.");

return false;

}

}

function mascara(o,f) //As Funções abaixo realizam

a máscara p/ o telefone. Ex.:(XX) 9999-9999

{

v_obj=o

v_fun=f

setTimeout("execmascara()",1)

}

426

function execmascara()

{

v_obj.value=v_fun(v_obj.value)

}

function itelefone(v)

{

v=v.replace(/\D/g,"") //Remove

tudo o que não é dígito

v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca

parênteses em volta dos dois primeiros dígitos

v=v.replace(/(\d{4})(\d)/,"$1-$2") //Coloca

hífen entre o quarto e o quinto dígitos

return v

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Administra&ccedil;&atilde;o |

Alterar Usu&aacute;rio</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

427

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario/">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento/">Monitoramento</a></li>

<li><a

href="index.php">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h2>Alterar Usu&aacute;rio</h2>

<h4>Altere os dados desejados</h4>

<form name="frmalterarusuario"

method="POST" action="../crud/alterar.php" onsubmit="return checarForm(); return

false;">

<input name="tipoform"

value="Alterar Usuario" type='hidden' />

<?php

if(isset($_POST['idusuario'])) //Verifica se algum usuário foi

selecionado

{

try

{

428

require_once("../crud/pesquisar.class.php");

$select =

new Select();

$select-

>pesquisarUsuarioID($_POST['idusuario']); //Pesquisa os dados no BD p/ o usuário

selecionado

foreach($select->registro as $registro)

{

//Monsta um formulário com os dados do usuário selecionado.

print ("

<input name='id' id='id' type='hidden' value='$registro[idusuario]' />

<br><br>

<label for='nome'>Nome:</label>

<input name='nome' type='text' id='nome' maxlength='30'

value='$registro[nome]' tabindex='1' />

<br><br>

<label for='perfil'>Perfil</label>

<select name='perfil' id='perfil' tabindex='2'>

<option

value='$registro[perfil]'>Atual:&nbsp;&nbsp;$registro[perfil]</option>

429

<option value='Administrador'>Administrador</option>

<option value='Operador'>Operador</option>

</select>

<br><br>

<label for='telefone'>Telefone:</label>

<input name='telefone' id='telefone' type='text' maxlength='30'

value='$registro[telefone]' tabindex='3' onkeypress='mascara(this,itelefone)' />

<br><br>

<label for='email'>Email:</label>

<input name='email' id='email' type='text' maxlength='30'

value='$registro[email]' tabindex='4' />

<br><br>

");

}

print("<input name='Alterar' type='submit' value='Alterar' tabindex='5'

/>

</form>");

}

catch(Exception

$e)

430

{

echo

"Erro: " . $e->getMessage();

}

}

else

{

print("</form>

<p>Nenhum

usuario foi selecionado.</p>");

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div id="quarter-grid" class="quarter-grid">

<a

href="cadastrarusuario.php">

<img

src="../imagens/cadastrar_usuario.png" alt="Cadastrar Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrarusuario.php" title="Cadastrar Usu&aacute;rio">

<span>Cadastrar

Usu&aacute;rio</span>

</a>

</div>

</div>

431

<div class="quarter-grid">

<a href="alterarusuario.php">

<img

src="../imagens/alterar_usuario.png" alt="Alterar Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterarusuario.php" title="Alterar Usu&aacute;rio">

<span>Alterar

Usu&aacute;rio</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirusuario.php">

<img

src="../imagens/excluir_usuario.png" alt="Excluir Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirusuario.php" title="Excluir Usu&aacute;rio">

<span>Excluir

Usu&aacute;rio</span>

</a>

</div>

</div>

</section>

432

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="index.php">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.8.5 Página excluirusuario.php

<?php

433

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, o usuário (Administrador) selecione o usuário que

ele deseja excluir.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

434

<title>PinGO PHP - Administra&ccedil;&atilde;o |

Excluir Usu&aacute;rio</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario/">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento/">Monitoramento</a></li>

<li><a

href="index.php">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h2>Excluir Usu&aacute;rio</h2>

<h4>Escolha o usu&aacute;rio a ser

exclu&iacute;do</h4>

435

<form name="frmexcluirusuario"

method="POST" action="../crud/excluir.php">

<input name="tipoform"

value="Excluir Usuario" type='hidden' />

<table>

<tr>

<td></td>

<td>Nome</td>

<td>Perfil</td>

<td>Email</td>

<td>Telefone</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisar todos os usuários, menos o que está logado.

//Afinal, ele não pode se auto-excluir, pois quem vai continuar

usando o sistema?

$select->pesquisarUsuarioTodosExceto($_SESSION['id']);

436

if($select->registro)

{

//Lista os usuários

foreach ($select->registro as $registros)

{

print ("<tr>

<td><input type='radio' id='idusuario'

name='idusuario' value='$registros[idusuario]' /></td>

<td>$registros[nome]</td>

<td>$registros[perfil]</td>

<td>$registros[email]</td>

<td>$registros[telefone]</td>

</tr>");

}

print("</table>

<input name='excluir' type='submit' value='Excluir' />

</form>");

437

}

else

{

print("</table>

</form>

<p>Nenhum registro encontrado.</p>");

}

}

catch

(Exception $erro)

{

echo "Erro:" . $erro->getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div id="quarter-grid" class="quarter-grid">

<a

438

href="cadastrarusuario.php">

<img

src="../imagens/cadastrar_usuario.png" alt="Cadastrar Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrarusuario.php" title="Cadastrar Usu&aacute;rio">

<span>Cadastrar

Usu&aacute;rio</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="alterarusuario.php">

<img

src="../imagens/alterar_usuario.png" alt="Alterar Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterarusuario.php" title="Alterar Usu&aacute;rio">

<span>Alterar

Usu&aacute;rio</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirusuario.php">

<img

439

src="../imagens/excluir_usuario.png" alt="Excluir Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirusuario.php" title="Excluir Usu&aacute;rio">

<span>Excluir

Usu&aacute;rio</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="index.php">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

440

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.8.6 Página meus_dados.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página, o usuário, através dum formulário, pode alterar seus

próprios dados.

*/

441

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

function checarForm() //Função p/ validar dados do

formulário. Os dados obrigatórios são nome, login e senha (min.7 e max.15).

{

if(document.frmalterarusuario.nome.value.length == 0)

{

alert("Informe o Nome.");

return false;

}

else

442

{

if

(document.frmalterarusuario.login.value.length == 0)

{

alert ("Informe o login");

return false;

}

else

{

if

(document.frmalterarusuario.senha.value.length == 0)

{

alert ("Informe a

senha");

return false;

}

else

{

if

((document.frmalterarusuario.senha.value.length < 7) ||

(document.frmalterarusuario.senha.value.length > 15))

{

alert("A senha

deve ter no m\u00ednimo 07 caracteres e no m\u00e1ximo 15 caracteres.");

return false;

}

}

}

}

}

</script>

443

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Administra&ccedil;&atilde;o |

Alterar Usu&aacute;rio</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario/">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento/">Monitoramento</a></li>

<li><a

href="index.php">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h2>Alterar Dados Pessoais</h2>

444

<h4>Altere os dados desejados</h4>

<form name="frmalterarusuario"

method="POST" action="../crud/alterar.php" onsubmit="return checarForm(); return

false;">

<input name="tipoform"

value="Alterar Usuario Logado" type='hidden' />

<?php

if(isset($_SESSION['id'])) //Verifica se há algum usuário logado

{

//Monsta

um form com os dados do usuário atual

print ("

<input name='id' id='id' type='hidden' value='$_SESSION[id]' />

<br><br>

<label for='nome'>Nome:</label>

<input name='nome' type='text' id='nome' maxlength='30'

value='$_SESSION[nome]' />

<br><br>

<label for='perfil'>Perfil</label>

<select name='perfil' id='perfil'>

<option

value='$_SESSION[perfil]'>Atual:&nbsp;&nbsp;$_SESSION[perfil]</option>

<option value='Administrador'>Administrador</option>

445

<option value='Operador'>Operador</option>

</select>

<br><br>

<label

for='telefone'>Telefone:</label>

<input name='telefone' id='telefone' type='text' maxlength='30'

value='$_SESSION[telefone]' />

<br><br>

<label for='email'>Email:</label>

<input name='email' id='email' type='text' maxlength='30'

value='$_SESSION[email]' />

<br><br>

<label for='login'>Login:</label>

<input name='login' id='login' type='text' maxlength='15'

value='$_SESSION[login]' />

<br

/><br />

<label for='senha'>Senha:</label>

<input name='senha' id='senha' type='password' maxlength='15'

value='$_SESSION[senha]' />

<br

/><br />

446

<input name='Alterar' type='submit' value='Alterar' />

</form>

");

}

else

{

print("</form>

<p>Nenhum

usuario foi selecionado.</p>");

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<?php

//Verifica qual o perfil do Usuário ao acessar

esta página, alterando as opções apresentadas na seção de box. Cada macaco no

seu galho!

if($_SESSION['perfil'] === 'Administrador')

{

print('<div id="quarter-grid"

class="quarter-grid">

<a

href="cadastrarusuario.php">

<img

src="../imagens/cadastrar_usuario.png" alt="Cadastrar Usu&aacute;rio">

</a>

<div class="portfolio-button"

447

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="cadastrarusuario.php" title="Cadastrar Usu&aacute;rio">

<span>Cadastrar

Usu&aacute;rio</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="alterarusuario.php">

<img

src="../imagens/alterar_usuario.png" alt="Alterar Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="alterarusuario.php" title="Alterar Usu&aacute;rio">

<span>Alterar

Usu&aacute;rio</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirusuario.php">

<img

src="../imagens/excluir_usuario.png" alt="Excluir Usu&aacute;rio">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

448

<a

href="excluirusuario.php" title="Excluir Usu&aacute;rio">

<span>Excluir

Usu&aacute;rio</span>

</a>

</div>

</div>');

}

else

{

print('<div class="quarter-grid">

<a href="meus_dados.php">

<img

src="../imagens/meus_dados.png" alt="Meus Dados">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="meus_dados.php" title="Meus Dados">

<span>Meus

Dados</span>

</a>

</div>

</div>');

}

?>

</section>

<footer class="content-footer">

<div>

<ul>

449

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="index.php">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

450

15.2.9 MONITORAMENTO

15.2.9.1 Arquivo pingo.class.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Classe que realiza o monitoramento, criando, conectando,

enviando e lendo os sockets. Caso necessário, pode-se utilizar da execução de

comandos no sistema

usando o bom e velho Ping.

*/

class Pingo

{

function monitorar($ativo) //Recebendo o endereço IP a

ser monitorado

{

return $this->enviar($ativo);

}

public static function enviar($ip_ativo)

{

if (extension_loaded('sockets')) //Verifica se a

extensão de socket está configurada no PHP

{

return self::enviarSocket($ip_ativo);

}

else //Caso não esteja carregada, vai-se monitorar

através da execução de comandos no sistema com o ping.

451

{

return self::execSend($ip_ativo);

}

}

protected static function enviarSocket($ip)

{

//Fazendo o pacote a ser enviado no socket

$tipo = "\x08";

$codigo = "\x00";

$checksum = "\x00\x00";

$identificador = "\x00\x00";

$seqNumero = "\x00\x00";

$dado = "Pingo";

$pacote =

$tipo.$codigo.$checksum.$identificador.$seqNumero.$dado; //cria o pacote a ser

enviando pelo socket.

$checksum =

self::calcularICMPChecksum($pacote); //Calcular o checksum (código de verificação

do pacote ICMP a ser enviado pelo socket)

$pacote =

$tipo.$codigo.$checksum.$identificador.$seqNumero.$dado; //Atualiza o pacote com

o novo valor do checksum

//Cria o socket. AF_INET = informa que usará o

protocolo TCP/IP; SOCK_RAW = especifica que o socket é orientado ao protoclo.

ICMP 1 = timeout

$icmp_socket = @socket_create(AF_INET,

SOCK_RAW, 1);

if (!$icmp_socket) //Veririca se o socket não foi

452

criado. Caso verdade, vamos usar o ping convencional.

{

self::execSend($ip);

}

else

{ //Configurando o socket, especificando,

principalmente suas coordenadas de tempo.

socket_set_option($icmp_socket,

SOL_SOCKET, SO_RCVTIMEO, array('sec' => 1, 'usec' => 0));

}

//Verifica se não foi possível conectar o socket

criado ao ip informado. Caso verdade, retorna o aviso.

if (!@socket_connect($icmp_socket, $ip, null))

{

return 'Falha na Conex&atilde;o.';

//<br

/><span><small>".socket_strerror(socket_last_error($icmp_socket))."</small></span

>";

}

else

{

//$startTime = microtime(true);

//Com a cnexão obtida, envia, através do

socket, o pacote antes definido, bem como informa o tamanho do pacote - strlen().

$send = @socket_send($icmp_socket,

$pacote, strLen($pacote), 0);

//Caso o envio não tenha ocorrido, returna o

aviso e encerra a conexão do socket.

if ($send === false)

{

453

return 'Falha no Envio dos Dados';

@socket_close($icmp_socket);

//socket_strerror(socket_last_error($icmp_socket));

}

//Caso conseguiu enviar, é hora de lermos

no socket, informando qual socket, bem como o tamanho do dado a ser lido.

//Caso positivo, retorna o aviso e encerra a

conexão.

elseif (@socket_read($icmp_socket, 512))

{

return "ONLINE";

//.round(microtime(true) - $startTime, 4) . " segundos";

@socket_close($icmp_socket);

}

//Se não for possível ler no socket, retorna o

aviso,limpa os erros do socket e fechamos a conexao.

else

{

return 'OFFLINE'; //<br><small>Falha

na Leitura dos Dados</small><br>";

socket_clear_error($icmp_socket);

@socket_close($icmp_socket);

}

}

}

//Método alternativo p/ monitoramento através do velho

'ping'

protected static function execSend($host)

{

$command = escapeshellcmd('ping -n 3 ' . $host);

454

return exec($command, $result, $returnCode);

}

//Calcula o código de verificação do pacote ICMP

protected static function calcularICMPChecksum($dado)

{

if (strlen($dado)%2)

$dado .= "\x00";

$bit = unpack('n*', $dado);

$sum = array_sum($bit);

while ($sum >> 16)

$sum = ($sum >> 16) + ($sum & 0xffff);

return pack('n*', ~$sum);

}

}

15.2.9.2 Página index.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Página inicial da seção "Monitoramento".

*/

session_start();

?>

455

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Monitoramento</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

456

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Monitoramento</h1>

<h2><i>Uma nova forma de

Monitorar...</i></h2>

<p>O <strong>Pingo PHP</strong>

utiliza o conceito de <strong>sockets</strong> para monitorar os ativos da sua

rede.&nbsp;

Os sockets facilitam o

monitoramento, pois s&atilde;o mais simples de serem implementados.</p>

<p>Dentre as op&ccedil;&otilde;es de

monitoramento, h&aacute; dois tipos: <a

href="monitoramento_grupo.php">Monitoramento por Grupo</a>

ou Monitoramento por Ativos,

podendo ser por&nbsp;<a

href="monitoramento_estacao.phph">Esta&ccedil;&atilde;o</a>,&nbsp;

<a

href="monitoramento_noderede.php">N&oacute; de Rede</a> ou <a

457

href="monitoramento_dispositivo.php">Dispositivo</a>.</p>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a href="monitoramento.php">

<img

src="../imagens/monitoramento.png" alt="Monitoramento">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento.php" title="Monitoramento">

<span>Monitoramento</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="ultimas_ocorrencias.php">

<img

src="../imagens/ultimas_ocorrencias.png" alt="&Uacute;ltimas Ocorr&ecirc;ncias">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="ultimas_ocorrencias.php" title="&Uacute;ltimas Ocorr&ecirc;ncias">

458

<span>&Uacute;ltimas Ocorr&ecirc;ncias</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="grupos.php">

<img

src="../imagens/grupo.png" alt="Grupos">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a href="grupos.php"

title="Grupos">

<span>Grupos</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

459

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.9.3 Página monitoramento.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

460

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Página que apresenta as opções refeerentes ao monitoramento.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Monitoramento</title>

</head>

461

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Monitoramento</h1>

<h2>Ativos</h2>

<h4>Selecione o que deseja

monitorar</h4>

<p><a

href="monitoramento_grupo.php">Monitoramento por Grupo</a></p>

<p><a

462

href="monitoramento_estacao.php">Monitoramento por

Esta&ccedil;&atilde;o</a></p>

<p><a

href="monitoramento_noderede.php">Monitoramento por N&oacute; de

Rede</a></p>

<p><a

href="monitoramento_dispositivo.php">Monitoramento por Dispostivo</a></p>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="monitoramento_grupo.php">

<img

src="../imagens/monitorar_grupo.png" alt="Monitorar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_grupo.php" title="Monitorar Grupo">

<span>Monitorar

Grupo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_estacao.php">

<img

463

src="../imagens/monitorar_estacao.png" alt="Monitorar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_estacao.php" title="Monitorar Esta&ccedil;&atilde;o">

<span>Monitorar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_noderede.php">

<img

src="../imagens/monitorar_noderede.png" alt="Monitorar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_noderede.php" title="Monitorar N&oacute; de Rede">

<span>Monitorar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_dispositivo.php">

<img

464

src="../imagens/monitorar_dispositivo.png" alt="Monitorar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_dispositivo.php" title="Monitorar Dispositivo">

<span>Monitorar

Dispositivo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

465

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.9.4 Página monitoramento_grupo.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página o usuário pode selecionar um grupo específico a ser

monitorado.

*/

session_start();

466

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Monitoramento</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

467

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Monitoramento</h1>

<h2>Grupos</h2>

<h4>Selecione o Grupo a ser

monitorado</h4>

<form name="frmmonitorargrupo"

method="POST" action="monitorar_grupo.php">

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa todos os

468

grupos

$select-

>pesquisarGrupoTodos();

foreach ($select-

>registro as $registros)

{

print ("

<input type='radio' name='idgrupo' value='$registros[id]'></input>

<input name='nomegrupo' value='$registros[nome]'

type='hidden'>&nbsp;&nbsp;<strong>

$registros[nome]</strong>&nbsp;&nbsp;</input>

<table>

<tr>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

</tr>");

$select2 = new

Select();

//Pesquisa as

estações do grupo

$select2-

469

>pesquisarEstacaoGrupo($registros['id']);

foreach($select2-

>registro as $estacao)

{

if(isset($estacao['id']))

{

print("<tr>

<td>$estacao[nome]</td>

<td>$estacao[ip]</td>

<td>$estacao[local]</td>

</tr>");

}

}

//Pesquisa os

nós de rede do grupo

$select2-

>pesquisarNoderedeGrupo($registros['id']);

foreach($select2-

>registro as $norede)

{

if(isset($norede['id']))

{

print("<tr>

470

<td>$norede[nome]</td>

<td>$norede[ip]</td>

<td>$norede[local]</td>

</tr>");

}

}

//Pesquisa por

todos os dispositivos do grupo

$select2-

>pesquisarDispositivoGrupo($registros['id']);

foreach($select2-

>registro as $dispositivo)

{

if(isset($dispositivo['id']))

{

print("<tr>

<td>$dispositivo[nome]</td>

<td>$dispositivo[ip]</td>

<td>$dispositivo[local]</td>

</tr>");

}

471

}

echo "</table>";

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

<input name='Monitorar'

type='submit' value='Monitorar'></input>

</form>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="monitoramento_grupo.php">

<img

src="../imagens/monitorar_grupo.png" alt="Monitorar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_grupo.php" title="Monitorar Grupo">

<span>Monitorar

Grupo</span>

</a>

472

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_estacao.php">

<img

src="../imagens/monitorar_estacao.png" alt="Monitorar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_estacao.php" title="Monitorar Esta&ccedil;&atilde;o">

<span>Monitorar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_noderede.php">

<img

src="../imagens/monitorar_noderede.png" alt="Monitorar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_noderede.php" title="Monitorar N&oacute; de Rede">

<span>Monitorar

N&oacute; de Rede</span>

</a>

473

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_dispositivo.php">

<img

src="../imagens/monitorar_dispositivo.png" alt="Monitorar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_dispositivo.php" title="Monitorar Dispositivo">

<span>Monitorar

Dispositivo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

474

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.9.5 Página monitorar_grupo.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

475

2013

*/

session_start(); //Iniciando a sessão para personalizar o uso

conforme os dados do usuário.

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent()

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<meta http-equiv="refresh"

content="20;url=monitorar_grupo.php"/>

<title>PinGO PHP - Monitoramento</title>

</head>

<body>

<header class="content-header clear">

476

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Monitoramento</h1>

<h2>Grupos</h2>

<?php

if(isset($_POST['idgrupo']))

{

$_SESSION['grupo'] =

$_POST['idgrupo'];

477

monitorar($_SESSION['grupo']);

}

else

{

monitorar($_SESSION['grupo']);

}

function monitorar($grupo)

{

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

// $cron = new Cron();

$select-

>pesquisarGrupoID($grupo);

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

print

("<h4>$registros[nome]</h4>

<table>

478

<tr>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Situa&ccedil;&atilde;o</td>

</tr>");

require_once("pingo.class.php");

$pingo =

new Pingo();

// $select2

= new Select();

$select-

>pesquisarEstacaoGrupo($registros['id']);

if($select-

>registro)

{

foreach($select->registro as $estacao)

{

print ("<tr>

479

<td>$estacao[nome]</td>

<td>$estacao[ip]</td>

<td>$estacao[local]</td>

<td>");

if($estacao['status'] == 'Ativo')

{

$situacao = $pingo->monitorar($estacao['ip']);

if($situacao !== 'ONLINE')

{

echo "<font color='red'>".$situacao."</font>";

require_once('../crud/inserir.class.php');

$insert = new Insert();

$insert-

>inserirOcorrenciaEstacao($estacao['id'],date('d/m/Y H:i'));

480

$quant = $select-

>pesquisarQuantOcorrenciaEstacao($estacao['id'],date('d/m/Y'));

if($quant[0][0] > 7)

{

echo "<br /><span><small>Excedeu o

limite.</small></span>";

}

}

else

echo "<font color='blue'>".$situacao."</font>";

}

else

{

481

echo '-------';

}

print("</td></tr>");

}

}

else

{

print("<p>N&atilde;o h&aacute; esta&ccedil;&otilde;es no

grupo.</p>");

}

$select-

>pesquisarNoderedeGrupo($registros['id']);

if($select-

>registro)

{

foreach($select->registro as $noderede)

{

print ("<tr>

<td>$noderede[nome]</td>

482

<td>$noderede[ip]</td>

<td>$noderede[local]</td>

<td>");

if($noderede['status'] == 'Ativo')

{

$situacao = $pingo->monitorar($noderede['ip']);

if($situacao !== 'ONLINE')

{

echo "<font color='red'>".$situacao."</font>";

require_once('../crud/inserir.class.php');

$insert = new Insert();

$insert-

>inserirOcorrenciaNoderede($noderede['id'],date('d/m/Y H:i'));

483

$quant = $select-

>pesquisarQuantOcorrenciaNoderede($noderede['id'],date('d/m/Y'));

if($quant[0][0] > 7)

{

echo "<br /><span><small>Excedeu o

limite.</small></span>";

}

}

else

echo "<font color='blue'>".$situacao."</font>";

}

else

{

echo '-------';

484

}

print("</td></tr>");

}

}

else

{

print("<p>N&atilde;o h&aacute; n&oacute;s de rede no grupo.</p>");

}

$select-

>pesquisarDispositivoGrupo($registros['id']);

if($select-

>registro)

{

foreach($select->registro as $dispositivo)

{

print ("<tr>

<td>$dispositivo[nome]</td>

<td>$dispositivo[ip]</td>

<td>$dispositivo[local]</td>

485

<td>");

if($dispositivo['status'] === 'Ativo')

{

$situacao = $pingo->monitorar($dispositivo['ip']);

if($situacao !== 'ONLINE')

{

echo "<font color='red'>".$situacao."</font>";

require_once('../crud/inserir.class.php');

$insert = new Insert();

$insert-

>inserirOcorrenciaDispositivo($dispositivo['id'],date('d/m/Y H:i'));

$quant = $select-

>pesquisarQuantOcorrenciaDispositivo($dispositivo['id'],date('d/m/Y'));

486

if($quant[0][0] > 7)

{

echo "<br /><span><small>Excedeu o

limite.</small></span>";

}

}

else

echo "<font color='blue'>".$situacao."</font>";

}

else

{

echo '-------';

}

487

print("</td></tr>");

}

print("</table>");

}

else

{

print("</table>

<p>N&atilde;o h&aacute; dispositivos no grupo.</p>");

}

}

}

else

{

print("<p>Nenhum registro encontrado.</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

}

?>

</div>

488

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="monitoramento_grupo.php">

<img

src="../imagens/monitorar_grupo.png" alt="Monitorar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_grupo.php" title="Monitorar Grupo">

<span>Monitorar

Grupo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_estacao.php">

<img

src="../imagens/monitorar_estacao.png" alt="Monitorar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_estacao.php" title="Monitorar Esta&ccedil;&atilde;o">

<span>Monitorar

Esta&ccedil;&atilde;o</span>

</a>

489

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_noderede.php">

<img

src="../imagens/monitorar_noderede.png" alt="Monitorar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_noderede.php" title="Monitorar N&oacute; de Rede">

<span>Monitorar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_dispositivo.php">

<img

src="../imagens/monitorar_dispositivo.png" alt="Monitorar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_dispositivo.php" title="Monitorar Dispositivo">

<span>Monitorar

Dispositivo</span>

</a>

490

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

491

</div>

</footer>

</body>

</html>

15.2.9.6 Página monitoramento_estacao.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página o usuário pode selecionar uma estação específica a

ser monitorada.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

492

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Monitoramento</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

493

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Monitoramento</h1>

<h2>Esta&ccedil;&atilde;o</h2>

<h4>Selecione a

Esta&ccedil;&atilde;o a ser monitorada</h4>

<form name="frmmonitorarestacao"

method="POST" action="monitorar_estacao.php">

<table>

<tr>

<td></td>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>SO</td>

<td>HD</td>

<td>CPU</td>

<td>RAM</td>

<td>Status</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

494

//Pesquisa todas as

estações

$select-

>pesquisarEstacaoTodos();

//Verifica se há

resultado

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime

todas as estações

print ("<tr>

<td><input type='radio' name='id'

value='$registros[id]'></input></td>

<td>$registros[nome]</td>

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[so]</td>

<td>$registros[hd]</td>

<td>$registros[cpu]</td>

<td>$registros[ram]</td>

495

<td>$registros[status]</td>

<tr>");

}

print("</table>

<input

name='Monitorar' type='submit' value='Monitorar'></input>

</form>");

}

else

{

print("</table>

</form>

<p>Nenhum

registro encontrado</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="monitoramento_grupo.php">

<img

496

src="../imagens/monitorar_grupo.png" alt="Monitorar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_grupo.php" title="Monitorar Grupo">

<span>Monitorar

Grupo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_estacao.php">

<img

src="../imagens/monitorar_estacao.png" alt="Monitorar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_estacao.php" title="Monitorar Esta&ccedil;&atilde;o">

<span>Monitorar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_noderede.php">

<img

497

src="../imagens/monitorar_noderede.png" alt="Monitorar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_noderede.php" title="Monitorar N&oacute; de Rede">

<span>Monitorar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_dispositivo.php">

<img

src="../imagens/monitorar_dispositivo.png" alt="Monitorar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_dispositivo.php" title="Monitorar Dispositivo">

<span>Monitorar

Dispositivo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

498

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

499

</body>

</html>

15.2.9.7 Página monitorar_estacao.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

Nesta página é exibido o monitoramento da estação selecionada.

Primeiro obtem-se os dados da estação selecionada através duma pesquisa no BD.

Depois verifica se seu status está ativo, caso contrário não é feito o

monitoramento. Estando ativo, cria-se o objeto pingo e faz-se o monitoramento.

Se o resultado for diferente de 'ONLINE', cria-se um objeto insert e

insere-se na tabela de ocorrências das estações a falha ocorrida. Por fim é verificado

quantas ocorrências aconteceram no dia para a estação em análise,

caso maior que 7, é informado que já excedeu o limite diário de ocorrências.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent()

{

500

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="refresh"

content="20;url=monitorar_estacao.php"/>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Monitoramento</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

501

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Monitoramento</h1>

<h2>Monitorar

Esta&ccedil;&atilde;o</h2>

<table>

<tr>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Situa&ccedil;&atilde;o</td>

</tr>

<?php

if(isset($_POST['id']))

{

$_SESSION['estacao']

= $_POST['id'];

monitorar($_SESSION['estacao']);

}

elseif(isset($_SESSION['estacao']))

{

502

monitorar($_SESSION['estacao']);

}

else

{

print("</table>

<br />

<p>Se por acaso o

monitoramento n&atilde;o for feito,isso significa que n&atilde;o

foi selecionado nenhuma

esta&ccedil;&atilde;o para ser monitorada. Caso deseje selecionar alguma, clique

em

<a

href='monitoramento_estacao.php'>Monitoramento por

Esta&ccedil;&atilde;o</a>.</p>");

}

function monitorar($idestacao)

{

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

$select->pesquisarEstacaoID($idestacao);

if($select->registro)

{

503

foreach($select->registro as $estacao)

{

print ("<tr>

<td>$estacao[nome]</td>

<td>$estacao[ip]</td>

<td>$estacao[local]</td>

<td>");

if($estacao['status'] == 'Ativo')

{

require_once("pingo.class.php");

$pingo = new Pingo();

$situacao = $pingo->monitorar($estacao['ip']);

if($situacao !== 'ONLINE')

504

{

echo "<font color='red'>".$situacao."</font>";

require_once('../crud/inserir.class.php');

$insert = new Insert();

$insert-

>inserirOcorrenciaEstacao($estacao['id'],date('d/m/Y H:i'));

$quant = $select-

>pesquisarQuantOcorrenciaEstacao($estacao['id'],date('d/m/Y'));

if($quant[0][0] > 7)

{

echo "<br /><span><small>Excedeu o

limite.</small></span>";

}

}

505

else

echo "<font color='blue'>".$situacao."</font>";

}

else

{

echo '-------';

}

}

print("</td></tr></table>");

}

else

{

506

print("</table>

<p>Nenhum registro encontrado</p>");

}

}

catch

(Exception $erro)

{

echo "Erro:" . $erro->getMessage();

}

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="monitoramento_grupo.php">

<img

src="../imagens/monitorar_grupo.png" alt="Monitorar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_grupo.php" title="Monitorar Grupo">

<span>Monitorar

Grupo</span>

</a>

507

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_estacao.php">

<img

src="../imagens/monitorar_estacao.png" alt="Monitorar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_estacao.php" title="Monitorar Esta&ccedil;&atilde;o">

<span>Monitorar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_noderede.php">

<img

src="../imagens/monitorar_noderede.png" alt="Monitorar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_noderede.php" title="Monitorar N&oacute; de Rede">

<span>Monitorar

N&oacute; de Rede</span>

</a>

508

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_dispositivo.php">

<img

src="../imagens/monitorar_dispositivo.png" alt="Monitorar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_dispositivo.php" title="Monitorar Dispositivo">

<span>Monitorar

Dispositivo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

509

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.9.8 Página monitoramento_noderede.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página o usuário pode selecionar um nó de rede específico

a ser monitorado.

*/

session_start();

?>

510

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Monitoramento - N&oacute; de

Rede</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

511

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Monitoramento</h1>

<h2>N&oacute; de Rede</h2>

<h4>Selecione o N&oacute; de Rede

a ser monitorado</h4>

<form name="frmalterarnoderede"

method="POST" action="monitorar_noderede.php">

<table>

<tr>

<td></td>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Tipo</td>

<td>Marca</td>

512

<td>Modelo</td>

<td>Freq</td>

<td>DBI</td>

<td>Status</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa por todos os

nós de rede

$select-

>pesquisarNoderedeTodos();

//Há resultado?

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime

os resultados

print ("<tr>

<td><input type='radio' name='id'

value='$registros[id]'></input></td>

<td>$registros[nome]</td>

513

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[tipo]</td>

<td>$registros[marca]</td>

<td>$registros[modelo]</td>

<td>$registros[freq]</td>

<td>$registros[dbi]</td>

<td>$registros[status]</td>

<tr>");

}

print("</table>

<input name='Monitorar' type='submit' value='Monitorar'></input>

</form>");

}

else

{

print("</table>

</form>

<p>Nenhum

registro encontrado</p>");

}

}

514

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="monitoramento_grupo.php">

<img

src="../imagens/monitorar_grupo.png" alt="Monitorar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_grupo.php" title="Monitorar Grupo">

<span>Monitorar

Grupo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_estacao.php">

<img

515

src="../imagens/monitorar_estacao.png" alt="Monitorar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_estacao.php" title="Monitorar Esta&ccedil;&atilde;o">

<span>Monitorar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_noderede.php">

<img

src="../imagens/monitorar_noderede.png" alt="Monitorar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_noderede.php" title="Monitorar N&oacute; de Rede">

<span>Monitorar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_dispositivo.php">

<img

516

src="../imagens/monitorar_dispositivo.png" alt="Monitorar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_dispositivo.php" title="Monitorar Dispositivo">

<span>Monitorar

Dispositivo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

517

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.9.9 Página monitorar_noderede.php

<?php

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

518

<script type="text/javascript">

function toggleContent()

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="refresh"

content="20;url=monitorar_noderede.php"/>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Monitoramento</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

519

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Monitoramento</h1>

<h2>N&oacute; de Rede</h2>

<table>

<tr>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Situa&ccedil;&atilde;o</td>

</tr>

<?php

if(isset($_POST['id']))

{

$_SESSION['noderede']

= $_POST['id'];

monitorar($_SESSION['noderede']);

}

elseif(isset($_SESSION['noderede']))

520

{

monitorar($_SESSION['noderede']);

}

else

{

print("</table>

<br />

<p>Se por acaso o

monitoramento n&atilde;o for feito,&nbsp;isso significa que n&atilde;o

foi selecionado nenhum

n&oacute; de rede para ser monitorado. Caso deseje selecionar algum, clique em

<a

href='monitoramento_noderede.php'>Monitoramento por N&oacute; de

Rede</a>.</p>");

}

function monitorar($idnoderede)

{

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

$select-

>pesquisarNoderedeID($idnoderede);

if($select->registro)

{

//

var_dump($select->registro);

521

foreach ($select-

>registro as $noderede)

{

print ("<tr>

<td>$noderede[nome]</td>

<td>$noderede[ip]</td>

<td>$noderede[local]</td>

<td>");

if($noderede['status'] == 'Ativo')

{

require_once("pingo.class.php");

$pingo = new Pingo();

$situacao = $pingo->monitorar($noderede['ip']);

if($situacao !== 'ONLINE')

{

522

echo "<font color='red'>".$situacao."</font>";

require_once('../crud/inserir.class.php');

$insert = new Insert();

$insert->inserirOcorrenciaNoderede($noderede['id'],date('d/m/Y

H:i'));

$quant = $select-

>pesquisarQuantOcorrenciaNoderede($noderede['id'],date('d/m/Y'));

if($quant[0][0] > 7)

{

echo "<br /><span><small>Excedeu o

limite.</small></span>";

}

}

else

523

echo "<font color='blue'>".$situacao."</font>";

}

else

{

echo '-------';

}

print("</td></tr></table>");

}

}

else

{

print("</table>

<p>Nenhum

registro encontrado</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

}

?>

524

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="monitoramento_grupo.php">

<img

src="../imagens/monitorar_grupo.png" alt="Monitorar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_grupo.php" title="Monitorar Grupo">

<span>Monitorar

Grupo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_estacao.php">

<img

src="../imagens/monitorar_estacao.png" alt="Monitorar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_estacao.php" title="Monitorar Esta&ccedil;&atilde;o">

525

<span>Monitorar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_noderede.php">

<img

src="../imagens/monitorar_noderede.png" alt="Monitorar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_noderede.php" title="Monitorar N&oacute; de Rede">

<span>Monitorar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_dispositivo.php">

<img

src="../imagens/monitorar_dispositivo.png" alt="Monitorar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_dispositivo.php" title="Monitorar Dispositivo">

526

<span>Monitorar

Dispositivo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

527

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.9.10 Página monitoramento_dispositivo.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página o usuário pode selecionar um dispositivo específico

a ser monitorado.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

528

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Monitoramento</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

529

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Monitoramento</h1>

<h2>Dispositivo</h2>

<h4>Selecione o Dispositivo a ser

monitorado</h4>

<form name="frmalterardispositivo"

method="POST" action="monitorar_dispositivo.php">

<table>

<tr>

<td></td>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Tipo</td>

<td>Status</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

530

$select = new Select();

//Pesquisa por todos os

dispositivos

$select-

>pesquisarDispositivoTodos();

//Verifica se há algum

resultado

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime

os resultados

print ("<tr>

<td><input type='radio' name='id'

value='$registros[id]'></input></td>

<td>$registros[nome]</td>

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[tipo]</td>

<td>$registros[status]</td>

<tr>");

531

}

print("</table>

<input

name='Monitorar' type='submit' value='Monitorar'></input>

</form>");

}

else

{

print("</table>

</form>

<p>Nenhum

registro encontrado</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="monitoramento_grupo.php">

<img

src="../imagens/monitorar_grupo.png" alt="Monitorar Grupo">

</a>

<div class="portfolio-button"

532

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_grupo.php" title="Monitorar Grupo">

<span>Monitorar

Grupo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_estacao.php">

<img

src="../imagens/monitorar_estacao.png" alt="Monitorar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_estacao.php" title="Monitorar Esta&ccedil;&atilde;o">

<span>Monitorar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_noderede.php">

<img

src="../imagens/monitorar_noderede.png" alt="Monitorar N&oacute; de Rede">

</a>

<div class="portfolio-button"

533

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_noderede.php" title="Monitorar N&oacute; de Rede">

<span>Monitorar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_dispositivo.php">

<img

src="../imagens/monitorar_dispositivo.png" alt="Monitorar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_dispositivo.php" title="Monitorar Dispositivo">

<span>Monitorar

Dispositivo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

534

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

535

15.2.9.11 Página monitorar_dispositivo.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

Nesta página é exibido o monitoramento do dispositivo selecionado.

Primeiro obtem-se os dados do dispositivo através duma pesquisa no BD.

Depois verifica se o status está ativo, caso contrário não é feito o

monitoramento. Estando ativo, cria-se o objeto pingo e faz-se o monitoramento.

Se o resultado for diferente de 'ONLINE', cria-se um objeto insert e

insere-se na tabela de ocorrências dos dispositivos a falha ocorrida.

Por fim é verificado quantas ocorrências aconteceram no dia para

este dispositivo, caso maior que 7, é informado que já excedeu o limite diário de

ocorrências.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent()

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

536

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="refresh"

content="20;url=monitorar_dispositivo.php"/>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Monitoramento</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

537

</header>

<article class="center-column">

<div class="article-content">

<h1>Monitoramento</h1>

<h2>Dispositivo</h2>

<table>

<tr>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Situa&ccedil;&atilde;o</td>

</tr>

<?php

if(isset($_POST['id']))

{

$_SESSION['dispositivo'] =

$_POST['id'];

monitorar($_SESSION['dispositivo']);

}

elseif(isset($_SESSION['dispositivo']))

{

monitorar($_SESSION['dispositivo']);

}

538

else

{

print("</table>

<br />

<p>Se por acaso o

monitoramento n&atilde;o for feito,isso significa que n&atilde;o

foi selecionado nenhum

disposiivo para ser monitorado. Caso deseje selecionar algum, clique em

<a

href='monitoramento_dispositivo.php'>Monitoramento por Dispositivo</a>.</p>");

}

function monitorar($iddispositivo)

{

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

$select-

>pesquisarDispositivoID($iddispositivo);

if($select->registro)

{

foreach ($select-

>registro as $dispositivo)

{

print ("<tr>

<td>$dispositivo[nome]</td>

539

<td>$dispositivo[ip]</td>

<td>$dispositivo[local]</td>

<td>");

if($dispositivo['status'] === 'Ativo')

{

require_once("pingo.class.php");

$pingo = new Pingo();

$situacao = $pingo->monitorar($dispositivo['ip']);

if($situacao !== 'ONLINE')

{

echo "<font color='red'>".$situacao."</font>";

require_once('../crud/inserir.class.php');

$insert = new Insert();

540

$insert-

>inserirOcorrenciaDispositivo($dispositivo['id'],date('d/m/Y H:i'));

$quant = $select-

>pesquisarQuantOcorrenciaDispositivo($dispositivo['id'],date('d/m/Y'));

if($quant[0][0] > 7)

{

echo "<br /><span><small>Excedeu o

limite.</small></span>";

}

}

else

echo "<font color='blue'>".$situacao."</font>";

}

else

{

541

echo '-------';

}

print("</td></tr></table>");

}

}

else

{

print("</table>

<p>Nenhum

registro encontrado</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a

href="monitoramento_grupo.php">

<img

542

src="../imagens/monitorar_grupo.png" alt="Monitorar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_grupo.php" title="Monitorar Grupo">

<span>Monitorar

Grupo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_estacao.php">

<img

src="../imagens/monitorar_estacao.png" alt="Monitorar Esta&ccedil;&atilde;o">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_estacao.php" title="Monitorar Esta&ccedil;&atilde;o">

<span>Monitorar

Esta&ccedil;&atilde;o</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_noderede.php">

<img

543

src="../imagens/monitorar_noderede.png" alt="Monitorar N&oacute; de Rede">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_noderede.php" title="Monitorar N&oacute; de Rede">

<span>Monitorar

N&oacute; de Rede</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="monitoramento_dispositivo.php">

<img

src="../imagens/monitorar_dispositivo.png" alt="Monitorar Dispositivo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="monitoramento_dispositivo.php" title="Monitorar Dispositivo">

<span>Monitorar

Dispositivo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

544

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

545

</body>

</html>

15.2.9.12 Página grupos.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Página que apresenta as opções referentes aos grupos do

sistema, bem como apresenta todos os grupos.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

546

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Monitoramento - Grupos</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

547

<div class="article-content">

<h2>Grupos</h2>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa todos os

grupos

$select-

>pesquisarGrupoTodos();

//Verifica se achou

alguma coisa

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime

todos os grupos

print

("<h4>$registros[nome]</h4>

<table>

<tr>

<td>Nome</td>

548

<td>IP</td>

<td>Local</td>

</tr>");

//Cria

novo objeto Select /p pesquisar todas as estações que pertencem ao grupo em

questão

$select2 =

new Select();

$select2-

>pesquisarEstacaoGrupo($registros['id']);

foreach($select2->registro as $estacao)

{

//Verifica se há alguma estação

if(isset($estacao['id']))

{

print("<tr>

<td>$estacao[nome]</td>

<td>$estacao[ip]</td>

<td>$estacao[local]</td>

</tr>");

}

549

}

//Pesquisa

por todos os nós de rede que pertencem ao grupo em questão

$select2-

>pesquisarNoderedeGrupo($registros['id']);

foreach($select2->registro as $norede)

{

//Verifica

se há algum resultado

if(isset($norede['id']))

{

print("<tr>

<td>$norede[nome]</td>

<td>$norede[ip]</td>

<td>$norede[local]</td>

</tr>");

}

}

//Pesquisa

por todos os dispositivos que pertencem ao grupo

$select2-

>pesquisarDispositivoGrupo($registros['id']);

550

foreach($select2->registro as $dispositivo)

{

//Verifica

se retornou alguma coisa

if(isset($dispositivo['id']))

{

print("<tr>

<td>$dispositivo[nome]</td>

<td>$dispositivo[ip]</td>

<td>$dispositivo[local]</td>

</tr>");

}

}

echo

"</table>";

}

}

else

{

echo

"<p>Nenhum Registro encontrado.</p>";

551

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<?php

//Verifica qual o perfil do Usuário ao acessar esta

página, alterando as opções apresentadas na seção de box. Cada macaco no seu

galho!

if($_SESSION['perfil'] === "Administrador")

{

print('<div class="quarter-grid">

<a href="cadastrargrupo.php">

<img

src="../imagens/cadastrar_grupo.png" alt="Cadastrar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="cadastrargrupo.php" title="Cadastrar Grupo">

<span>Cadastrar

Grupo</span>

</a>

552

</div>

</div>

<div class="quarter-grid">

<a href="alterargrupo.php">

<img

src="../imagens/alterar_grupo.png" alt="Alterar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="alterargrupo.php" title="Alterar Grupo">

<span>Alterar

Grupo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirgrupo.php">

<img

src="../imagens/excluir_grupo.png" alt="Excluir Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="excluirgrupo.php" title="Excluir Grupo">

<span>Excluir

Grupo</span>

</a>

</div>

</div>');

553

}

else

{

print('<div class="quarter-grid">

<a href="monitoramento.php">

<img

src="../imagens/monitoramento.png" alt="Monitoramento">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="monitoramento.php" title="Monitoramento">

<span>Monitoramento</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="ultimas_ocorrencias.php">

<img

src="../imagens/ultimas_ocorrencias.png" alt="&Uacute;ltimas Ocorr&ecirc;ncias">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a

href="ultimas_ocorrencias.php" title="&Uacute;ltimas Ocorr&ecirc;ncias">

<span>&Uacute;ltimas Ocorr&ecirc;ncias</span>

</a>

554

</div>

</div>

<div class="quarter-grid">

<a href="grupos.php">

<img

src="../imagens/grupo.png" alt="Grupos">

</a>

<div class="portfolio-button"

onmouseover="this.className=\'portfolio-button fader\'"

onmouseout="this.className=\'portfolio-button\'">

<a href="grupos.php"

title="Grupos">

<span>Grupos</span>

</a>

</div>

</div>');

}

?>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

555

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.9.13 Página cadastrargrupo.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página o usuário pode criar um grupo, bem como selecionar

quais estações, nós de rede e dispositivos comporão este grupo.

*/

session_start();

?>

556

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

function checarForm() //Função p/ validar o form. O

único dado obrigatório é o nome do grupo

{

if(document.frmcadastrargrupo.nome.value.length == 0)

{

alert("Informe o Nome.");

return false;

}

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

557

<title>PinGO PHP - Monitoramento - Grupos -

Cadastrar Grupo</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Cadastrar Grupo</h1>

<form name="frmcadastrargrupo"

method="POST" action="../crud/cadastrar.php" onsubmit="return checarForm();

return false;">

558

<input name='tipoform' value='Cadastrar

Grupo' type='hidden' />

<label for="nome">Nome:</label>

<input name="nome" type="text" id="nome"

maxlength="30" />

<br><br>

<h4>Selecione os Ativos do Grupo:</h4>

<h3>Esta&ccedil;&otilde;es</h3>

<table>

<tr>

<td></td>

<td>Nome</td>

<td>Local</td>

<td>IP</td>

<td>SO</td>

<td>HD</td>

<td>CPU</td>

<td>RAM</td>

<td>Status</td>

</tr>

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa por todas as

estações

$select-

>pesquisarEstacaoTodos();

559

//Verifica se há algum

resultado

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime todos os resultados

print ("<tr>

<td><input type='checkbox' name='idestacao[]'

value='$registros[id]' /></td>

<td>$registros[nome]</td>

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[so]</td>

<td>$registros[hd]</td>

<td>$registros[cpu]</td>

<td>$registros[ram]</td>

<td>$registros[status]</td>

<tr>");

}

}

560

else

{

echo

"<p>Nenhum registro encontrado</p>";

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</table>

<h2>N&oacute;s de Rede</h2>

<table>

<tr>

<td></td>

<td>Nome</td>

<td>Local</td>

<td>IP</td>

<td>Tipo</td>

<td>Marca</td>

<td>Modelo</td>

<td>Freq</td>

<td>DBI</td>

<td>Status</td>

</tr>

<?php

561

try

{

//Pesquisa por todos os

nós de rede

$select-

>pesquisarNoderedeTodos();

//Verifica se a consulta

retornou alguma coisa

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime

os resultados

print ("<tr>

<td><input type='checkbox' name='idnoderede[]'

value='$registros[id]' /></td>

<td>$registros[nome]</td>

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[tipo]</td>

<td>$registros[marca]</td>

<td>$registros[modelo]</td>

562

<td>$registros[freq]</td>

<td>$registros[dbi]</td>

<td>$registros[status]</td>

<tr>");

}

}

else

{

echo

"<p>Nenhum registro encontrado</p>";

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</table>

<h2>Dispositivos</h2>

<table>

<tr>

<td></td>

<td>Nome</td>

<td>Local</td>

<td>IP</td>

<td>Tipo</td>

563

<td>Status</td>

</tr>

<?php

try

{

//Pesqquisa por todos

os dispositivos

$select-

>pesquisarDispositivoTodos();

//Verifica se retornou

alguma coisa

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime

os resultados

print ("<tr>

<td><input type='checkbox' name='iddispositivo[]'

value='$registros[id]' /></td>

<td>$registros[nome]</td>

<td>$registros[ip]</td>

<td>$registros[local]</td>

<td>$registros[tipo]</td>

564

<td>$registros[status]</td>

<tr>");

}

}

else

{

echo

"<p>Nenhum registro encontrado</p>";

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</table>

<br><br>

<input name="Cadastrar"

type="submit" id="cadastrar" value="Cadastrar" />

<input name="Limpar" type="reset"

id="limpar" value="Limpar" />

</form>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a href="cadastrargrupo.php">

565

<img

src="../imagens/cadastrar_grupo.png" alt="Cadastrar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrargrupo.php" title="Cadastrar Grupo">

<span>Cadastrar

Grupo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="alterargrupo.php">

<img

src="../imagens/alterar_grupo.png" alt="Alterar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterargrupo.php" title="Alterar Grupo">

<span>Alterar

Grupo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirgrupo.php">

<img

src="../imagens/excluir_grupo.png" alt="Excluir Grupo">

566

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirgrupo.php" title="Excluir Grupo">

<span>Excluir

Grupo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

567

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.9.14 Página alterargrupo.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página é listado todos os grupos, bem como os ativos

pertencentes aos grupos a fim do usuário selecionar o grupo a ser alterado.

*/

session_start();

?>

568

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Monitoramento - Grupos</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

569

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h2>Grupos</h2>

<h5>Selecione o grupo a ser

alterado</h5>

<form name="frmalterargrupo"

method="POST" action="vergrupo.php">

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa por todos os

grupos

$select-

>pesquisarGrupoTodos();

570

//Verifica se achou

alguma coisa

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime

todos os grupos

print ("

<input type='radio' name='idgrupo' value='$registros[id]'></input>

<input name='nomegrupo' value='$registros[nome]'

type='hidden'>&nbsp;&nbsp;<strong>

$registros[nome]</strong>&nbsp;&nbsp;</input>

<table>

<tr>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

</tr>");

//Cria

novo objeto Select /p pesquisar todas as estações que pertencem ao grupo em

571

questão

$select2 =

new Select();

$select2-

>pesquisarEstacaoGrupo($registros['id']);

//Verifica

se há alguma estação

if($select2->registro)

{

foreach($select2->registro as $estacao)

{

print("<tr>

<td>$estacao[nome]</td>

<td>$estacao[ip]</td>

<td>$estacao[local]</td>

</tr>");

}

}

else

{

print("<p>N&atilde;o h&aacute; esta&ccedil;&otilde;es no

572

grupo.</p>");

}

//Pesquisa

por todos os nós de rede que pertencem ao grupo em questão

$select2-

>pesquisarNoderedeGrupo($registros['id']);

//Verifica

se há algum resultado

if($select2->registro)

{

foreach($select2->registro as $norede)

{

print("<tr>

<td>$norede[nome]</td>

<td>$norede[ip]</td>

<td>$norede[local]</td>

</tr>");

}

}

else

{

print("<p>N&atilde;o h&aacute; n&oacute;s de rede no grupo.</p>");

}

573

//Pesquisa

por todos os dispositivos que pertencem ao grupo

$select2-

>pesquisarDispositivoGrupo($registros['id']);

//Verifica

se retornou alguma coisa

if($select2->registro)

{

foreach($select2->registro as $dispositivo)

{

print("<tr>

<td>$dispositivo[nome]</td>

<td>$dispositivo[ip]</td>

<td>$dispositivo[local]</td>

</tr>");

}

}

else

{

print("<p>N&atilde;o h&aacute; dispositivos no grupo.</p>");

}

574

print("</table>");

}

print("<input

name='Alterar' type='submit' value='Alterar'></input>

</form>");

}

else

{

print("</table>

</form>

<p>Nenhum

registro encontrado.</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a href="cadastrargrupo.php">

<img

src="../imagens/cadastrar_grupo.png" alt="Cadastrar Grupo">

575

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrargrupo.php" title="Cadastrar Grupo">

<span>Cadastrar

Grupo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="alterargrupo.php">

<img

src="../imagens/alterar_grupo.png" alt="Alterar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterargrupo.php" title="Alterar Grupo">

<span>Alterar

Grupo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirgrupo.php">

<img

src="../imagens/excluir_grupo.png" alt="Excluir Grupo">

</a>

<div class="portfolio-button"

576

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirgrupo.php" title="Excluir Grupo">

<span>Excluir

Grupo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

577

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.9.15 Página vergrupo.php

<?php

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent()

{

578

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

function checarForm()

{

if(document.frmalterargrupo.nome.value.length == 0)

{

alert("Informe o Nome.");

return false;

}

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Monitoramento - Grupos</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

579

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h2>Grupos</h2>

<h3>Altere os dados desejados</h3>

<form name="frmalterargrupo"

method="POST" action="../crud/alterar.php" onsubmit="return checarForm(); return

false;">

<input name='tipoform'

value='Alterar Grupo' type='hidden' />

<?php

if(isset($_POST['idgrupo']))

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

$select-

580

>pesquisarGrupoID($_POST['idgrupo']);

foreach($select-

>registro as $grupo)

{

print("<input

name='idgrupo' id='idgrupo' type='hidden' value='$grupo[id]' />

<label

for='nome'>Nome:</label>

<input

name='nomegrupo' type='text' id='nome' value='$grupo[nome]' maxlength='30' />

<br><br>

<h4>Informe os

ativos do Grupo</h4>

<h5>Estacoes</h5>

<table>

<tr>

<td></td>

<td>Nome</td>

<td>Local</td>

<td>IP</td>

</tr>");

try

{

$select2 =

new Select();

581

$select2-

>pesquisarEstacaoTodos();

if($select2->registro)

{

foreach ($select2->registro as $estacao)

{

if($estacao['grupo'] == $grupo['id'])

{

print ("<tr>

<td><input type='checkbox' name='idestacao[]'

value='$estacao[id]' checked='checked' /></td>

<td>$estacao[nome]</td>

<td>$estacao[local]</td>

<td>$estacao[ip]</td>

</tr>");

}

else

582

{

print("<tr>

<td><input type='checkbox' name='idestacao[]'

value='$estacao[id]' /></td>

<td>$estacao[nome]</td>

<td>$estacao[local]</td>

<td>$estacao[ip]</td>

</tr>");

}

}

echo "</table>";

}

else

{

print("</table>

<p>Nenhuma esta&ccedil;&atilde;o encontrada.</p>");

}

583

print("<h5>N&oacute;s de Rede</h5>

<table>

<tr>

<td></td>

<td>Nome</td>

<td>Local</td>

<td>IP</td>

</tr>");

$select2-

>pesquisarNoderedeTodos();

if($select2->registro)

{

foreach ($select2->registro as $norede)

{

if($norede['grupo'] == $grupo['id'])

{

print("<tr>

<td><input type='checkbox' name='idnoderede[]'

value='$norede[id]' checked='checked' /></td>

<td>$norede[nome]</td>

584

<td>$norede[local]</td>

<td>$norede[ip]</td>

</tr>");

}

else

{

print("<tr>

<td><input type='checkbox' name='idnoderede[]'

value='$norede[id]' /></td>

<td>$norede[nome]</td>

<td>$norede[local]</td>

<td>$norede[ip]</td>

</tr>");

}

}

echo "</table>";

}

585

else

{

print("</table>

<p>Nenhum n&oacute; de rede encontrado.</p>");

}

print("<h5>Dispositivos</h5>

<table>

<tr>

<td></td>

<td>Nome</td>

<td>Local</td>

<td>IP</td>

</tr>");

$select-

>pesquisarDispositivoTodos();

if($select-

>registro)

{

foreach ($select->registro as $dispositivo)

586

{

if($dispositivo['grupo'] == $grupo['id'])

{

print ("<tr>

<td><input type='checkbox' name='iddispositivo[]'

value='$dispositivo[id]' checked='checked' /></td>

<td>$dispositivo[nome]</td>

<td>$dispositivo[local]</td>

<td>$dispositivo[ip]</td>

</tr>");

}

else

{

print ("<tr>

<td><input type='checkbox' name='iddispositivo[]'

value='$dispositivo[id]' /></td>

<td>$dispositivo[nome]</td>

<td>$dispositivo[local]</td>

587

<td>$dispositivo[ip]</td>

</tr>");

}

}

echo "</table>";

}

else

{

print("</table>

<p>Nenhum dispositivo encontrado.</p>");

}

print("<br><br>

<input

name='Alterar' type='submit' id='Alterar' value='Alterar' />

<input

name='Limpar' type='reset' id='limpar' value='Limpar' />

</form>");

}

catch (Exception

$erro)

{

echo

588

"Erro:" . $erro->getMessage();

}

}

}

else

{

print("</form>

<p>Nenhum grupo

grupo selecionado.");

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a href="cadastrargrupo.php">

<img

src="../imagens/cadastrar_grupo.png" alt="Cadastrar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrargrupo.php" title="Cadastrar Grupo">

<span>Cadastrar

Grupo</span>

</a>

</div>

</div>

589

<div class="quarter-grid">

<a href="alterargrupo.php">

<img

src="../imagens/alterar_grupo.png" alt="Alterar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterargrupo.php" title="Alterar Grupo">

<span>Alterar

Grupo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirgrupo.php">

<img

src="../imagens/excluir_grupo.png" alt="Excluir Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirgrupo.php" title="Excluir Grupo">

<span>Excluir

Grupo</span>

</a>

</div>

</div>

</section>

590

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

591

</footer>

</body>

</html>

15.2.9.16 Página excluirgrupo.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Nesta página o usuário pode excluir um grupo.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

592

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Monitoramento - Grupos</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

593

<article class="center-column">

<div class="article-content">

<h2>Grupos</h2>

<h5>Selecione o grupo a ser

exclu&iacute;do</h5>

<form name="frmexcluirgrupo"

method="POST" action="../crud/excluir.php">

<input name="tipoform"

value="Excluir Grupo" type="hidden" />

<?php

try

{

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa por todos os

grupos

$select-

>pesquisarGrupoTodos();

//Verifica se retornou

alguma coisa

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime

o nome do grupo

print ("

<input type='radio' name='idgrupo' value='$registros[id]'></input>

594

<input name='nomegrupo' value='$registros[nome]'

type='hidden'>&nbsp;&nbsp;<strong>

$registros[nome]</strong>&nbsp;&nbsp;</input>

<table>

<tr>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

</tr>");

$select2 =

new Select();

//Agora

pesquisar-se-á pelas estações que pertencem ao grupo em questão

$select2-

>pesquisarEstacaoGrupo($registros['id']);

//Verifica

se a consulta retornou alguma coisa

if($select2->registro)

{

foreach($select2->registro as $estacao)

{

595

//Imprime o resultado

print("<tr>

<td>$estacao[nome]</td>

<td>$estacao[ip]</td>

<td>$estacao[local]</td>

</tr>");

}

}

else

{

print("<p>N&atilde;o h&aacute; esta&ccedil;&otilde;es no

grupo.</p>");

}

//Pesquisa

pelos nós de rede que pertencem ao grupo em questão

$select2-

>pesquisarNoderedeGrupo($registros['id']);

//Verifica

se a consulta retornou alguma cosia

if($select2->registro)

{

596

foreach($select2->registro as $norede)

{

//Imprime os resultados

print("<tr>

<td>$norede[nome]</td>

<td>$norede[ip]</td>

<td>$norede[local]</td>

</tr>");

}

}

else

{

print("<p>N&atilde;o h&aacute; n&oacute;s de rede no grupo.</p>");

}

//Pesquisa

pelos dispositivos que fazem parte do grupo

$select2-

>pesquisarDispositivoGrupo($registros['id']);

//Verifica

se há resultado

if($select2->registro)

{

597

foreach($select2->registro as $dispositivo)

{

//Imprime o resultado

print("<tr>

<td>$dispositivo[nome]</td>

<td>$dispositivo[ip]</td>

<td>$dispositivo[local]</td>

</tr>");

}

}

else

{

print("<p>N&atilde;o h&aacute; dispositivos no grupo.</p>");

}

echo

"</table>";

}

print("<input

name='Excluir' type='submit' value='Excluir'></input>

</form>");

}

598

else

{

print("</table>

</form>

<p>Nenhum

registro encontrado.</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a href="cadastrargrupo.php">

<img

src="../imagens/cadastrar_grupo.png" alt="Cadastrar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="cadastrargrupo.php" title="Cadastrar Grupo">

<span>Cadastrar

Grupo</span>

</a>

</div>

599

</div>

<div class="quarter-grid">

<a href="alterargrupo.php">

<img

src="../imagens/alterar_grupo.png" alt="Alterar Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="alterargrupo.php" title="Alterar Grupo">

<span>Alterar

Grupo</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="excluirgrupo.php">

<img

src="../imagens/excluir_grupo.png" alt="Excluir Grupo">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="excluirgrupo.php" title="Excluir Grupo">

<span>Excluir

Grupo</span>

</a>

</div>

</div>

600

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

601

</div>

</footer>

</body>

</html>

15.2.9.17 Página ultimas_ocorrencias.php

<?php

/*

@Moisés Santos Farias - Graduando em Análise e Desenvolvimento

de Sistemas - Unopar Arapiraca - AL

@TCC - Pingo PHP - Sistema simples de Gerenciamento de Redes -

2013

@Página que apresenta últimas ocorrências (falhas) dos ativos.

*/

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent() //Função p/ exibir o

"Menu" em dispositivos móveis

{

// Get the DOM reference

var contentId =

602

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Monitoramento</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="index.php">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="../relatorio">Relat&oacute;rio</a></li>

</ul>

</nav>

603

</header>

<article class="center-column">

<div class="article-content">

<h1>Monitoramento</h1>

<h2>&Uacute;ltimas

Ocorr&ecirc;ncias</h2>

<?php

try

{

print

("<h4>Esta&ccedil;&atilde;o</h4>

<table>

<tr>

<td>Data/Hora</td>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

</tr>");

require_once("../crud/pesquisar.class.php");

$select = new Select();

//Pesquisa pelas últimas

ocorrências das estações

$select-

604

>pesquisarUltimasOcorrEstacao();

//Verifica se retornou

alguma coisa

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime

os reasultados

print ("<tr>

<td>$registros[1]</td>

<td>$registros[2]</td>

<td>$registros[3]</td>

<td>$registros[4]</td>

</tr>");

}

echo "</table>";

}

print ("<h4>N&oacute;s

de Rede</h4>

<table>

<tr>

<td>Data/Hora</td>

<td>Nome</td>

605

<td>IP</td>

<td>Local</td>

</tr>");

//Pesquisa pelas últimas

ocorrências relacionadas aos nós de rede

$select-

>pesquisarUltimasOcorrNoderede();

//Verifica se a consulta

retornou alguma coisa

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime

os resultados

print ("<tr>

<td>$registros[1]</td>

<td>$registros[2]</td>

<td>$registros[3]</td>

<td>$registros[4]</td>

</tr>");

}

echo "</table>";

606

}

print

("<h4>Dispositivo</h4>

<table>

<tr>

<td>Data/Hora</td>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

</tr>");

//Pesquisa pelas

ocorrências nos dispositivos

$select-

>pesquisarUltimasOcorrDispositivo();

//Verifica se retornou

alguma coisa

if($select->registro)

{

foreach ($select-

>registro as $registros)

{

//Imprime

os resultados

print ("<tr>

<td>$registros[1]</td>

607

<td>$registros[2]</td>

<td>$registros[3]</td>

<td>$registros[4]</td>

</tr>");

}

echo "</table>";

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</table>

</div>

</article>

<section class="portfolio-grid clear">

<div class="quarter-grid">

<a href="monitoramento.php">

<img

src="../imagens/monitoramento.png" alt="Monitoramento">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

608

<a

href="monitoramento.php" title="Monitoramento">

<span>Monitoramento</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a

href="ultimas_ocorrencias.php">

<img

src="../imagens/ultimas_ocorrencias.png" alt="&Uacute;ltimas Ocorr&ecirc;ncias">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href="ultimas_ocorrencias.php" title="&Uacute;ltimas Ocorr&ecirc;ncias">

<span>&Uacute;ltimas Ocorr&ecirc;ncias</span>

</a>

</div>

</div>

<div class="quarter-grid">

<a href="grupos.php">

<img

src="../imagens/grupo.png" alt="Grupos">

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a href="grupos.php"

609

title="Grupos">

<span>Grupos</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="index.php">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="../relatorio">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

610

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.10 RELATÓRIO

15.2.10.1 Página index.php

<?php

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent()

{

611

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Relat&oacute;rio</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="index.php">Relat&oacute;rio</a></li>

612

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Relat&oacute;rio</h1>

<p><a

href="relat_usuario.php">Relat&oacute;rios de Usu&aacute;rio</a></p>

<p><a

href="relat_ativo.php">Relat&oacute;rios de Ativo</a></p>

<p><a

href="relat_ocorrencias.php">Relat&oacute;rios de Ocorr&ecirc;ncias</a></p>

</div>

</article>

<section class="portfolio-grid clear">

<div class='quarter-grid'>

<a

href='relat_ocorrencias.php'>

<img

src='../imagens/relatorio_ocorrencia.png' alt='Ocorr&ecirc;ncias'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href='relat_ocorrencias.php' title='Ocorr&ecirc;ncias'>

<span>Relat&oacute;rios de Ocorr&ecirc;ncias</span>

</a>

613

</div>

</div>

<div class='quarter-grid'>

<a href='relat_usuario.php'>

<img

src='../imagens/relatorio_usuario.png' alt='Relat&oacute;rios de Usu&aacute;rio'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href='relat_usuario.php' title='Relat&oacute;rios de Usu&aacute;rio'>

<span>Relat&oacute;rios de Usu&aacute;rio</span>

</a>

</div>

</div>

<div class='quarter-grid'>

<a href='relat_ativo.php'>

<img

src='../imagens/relatorio_ativo.png' alt='Relat&oacute;rios de Ativo'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a href='relat_ativo.php'

title='Relat&oacute;rios de Ativo'>

<span>Relat&oacute;rios de Ativo</span>

</a>

</div>

</div>

614

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="index.php">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

615

</div>

</footer>

</body>

</html>

15.2.10.2 Página relat_ativo.php

<?php

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent()

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

616

content="text/html; charset=utf-8">

<title>PinGO PHP - Relat&oacute;rio</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="index.php">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Relat&oacute;rio</h1>

<h2>Ativos</h2>

<?php

617

require_once('../crud/pesquisar.class.php');

$select = new Select();

$select->pesquisarQuantEstacao();

print('<p>Quantidade de

Esta&ccedil;&otilde;es cadastradas:<b> '.$select->registro[0][0].'</b></p>');

$select->pesquisarQuantNoderede();

print('<p>Quantidade de N&oacute;s

de Rede cadastrados:<b> '.$select->registro[0][0].'</b></p>');

$select-

>pesquisarQuantDispositivo();

print('<p>Quantidade de Dispositivos

cadastrados:<b> '.$select->registro[0][0].'</b></p>');

?>

<p><a

href="../inventario/estacoes.php">Visualizar todas as Esta&ccedil;&otilde;es</a></p>

<p><a

href="../inventario/noderede.php">Visualizar todos os N&oacute;s de Rede</a></p>

<p><a

href="../inventario/dispositivos.php">Visualizar todos os Dispositivos</a></p>

<br /><hr /><br />

618

<h3>Esta&ccedil;&otilde;es</h3>

<h4>Cadastrados por

Usu&aacute;rio</h4>

<form name='frmacessoporusuario'

method='POST' action='gerar_relatorio.php' target='_blank'>

<input name='tipoform'

value='Estacoes por Usuario' type='hidden'></input>

<table>

<tr>

<td></td>

<td>Nome</td>

<td>Perfil</td>

</tr>

<?php

try

{

$select-

>pesquisarUsuarioTodos();

if($select->registro)

{

foreach ($select-

>registro as $usuario)

{

print ("<tr>

<td><input type='radio' name='idusuario'

value='$usuario[idusuario]'></input></td>

<td>$usuario[nome]</td>

<td>$usuario[perfil]</td>

619

</tr>");

}

}

print("</table>

<input

name='Visualizar' type='submit' value='Visualizar' />

</form>

<br />");

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

<br /><hr /><br />

<h3>N&oacute;s de Rede</h3>

<h4>Cadastrados por

Usu&aacute;rio</h4>

<form name='frmestacoesusuario'

method='POST' action='gerar_relatorio.php' target='_blank'>

<input name='tipoform'

value='Nos de Rede por Usuario' type='hidden'></input>

<table>

<tr>

<td></td>

<td>Nome</td>

<td>Perfil</td>

</tr>

620

<?php

try

{

$select-

>pesquisarUsuarioTodos();

if($select->registro)

{

foreach ($select-

>registro as $usuario)

{

print ("<tr>

<td><input type='radio' name='idusuario'

value='$usuario[idusuario]'></input></td>

<td>$usuario[nome]</td>

<td>$usuario[perfil]</td>

</tr>");

}

}

print("</table>

<input

name='Visualizar' type='submit' value='Visualizar' />

</form>

<br />");

}

catch (Exception $erro)

{

621

echo "Erro:" . $erro-

>getMessage();

}

?>

<br /><hr /><br />

<h3>Dispositivos</h3>

<h4>Cadastrados por

Usu&aacute;rio</h4>

<form name='frmedispositivosusuario'

method='POST' action='gerar_relatorio.php' target='_blank'>

<input name='tipoform'

value='Dispositivos por Usuario' type='hidden'></input>

<table>

<tr>

<td></td>

<td>Nome</td>

<td>Perfil</td>

</tr>

<?php

try

{

$select-

>pesquisarUsuarioTodos();

if($select->registro)

{

foreach ($select-

>registro as $usuario)

{

print ("<tr>

<td><input type='radio' name='idusuario'

622

value='$usuario[idusuario]'></input></td>

<td>$usuario[nome]</td>

<td>$usuario[perfil]</td>

</tr>");

}

}

print("</table>

<input

name='Visualizar' type='submit' value='Visualizar' />

</form>

<br />");

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

?>

</div>

</article>

<section class="portfolio-grid clear">

<div class='quarter-grid'>

<a

href='relat_ocorrencias.php'>

623

<img

src='../imagens/relatorio_ocorrencia.png' alt='Ocorr&ecirc;ncias'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href='relat_ocorrencias.php' title='Ocorr&ecirc;ncias'>

<span>Relat&oacute;rios de Ocorr&ecirc;ncias</span>

</a>

</div>

</div>

<div class='quarter-grid'>

<a href='relat_usuario.php'>

<img

src='../imagens/relatorio_usuario.png' alt='Relat&oacute;rios de Usu&aacute;rio'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href='relat_usuario.php' title='Relat&oacute;rios de Usu&aacute;rio'>

<span>Relat&oacute;rios de Usu&aacute;rio</span>

</a>

</div>

</div>

<div class='quarter-grid'>

<a href='relat_ativo.php'>

<img

src='../imagens/relatorio_ativo.png' alt='Relat&oacute;rios de Ativo'>

624

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a href='relat_ativo.php'

title='Relat&oacute;rios de Ativo'>

<span>Relat&oacute;rios de Ativo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="index.php">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

625

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.10.3 Página relat_usuario.php

<?php

session_start();

?>

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

626

function toggleContent()

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Relat&oacute;rio</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

627

<li><a

href="index.php">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Relat&oacute;rio</h1>

<h2>Usu&aacute;rios</h2>

<?php

require_once('../crud/pesquisar.class.php');

$select = new Select();

$select->pesquisarQuantUsuario();

print('<p>Quantidade de

Usu&aacute;rios cadastrados:<b> '.$select->registro[0][0].'</b></p>');

$select-

>pesquisarQuantAdministrador();

print('<p>Quantidade de

Usu&aacute;rios com perfil Administrador:<b> '.$select->registro[0][0].'</b></p>');

$select->pesquisarQuantOperador();

print('<p>Quantidade de

Usu&aacute;rios com perfil Operador:<b> '.$select->registro[0][0].'</b></p>');

628

?>

<br /><hr /><br />

<h3>Acessos</h3>

<h4>Por Usu&aacute;rio</h4>

<form name='frmacessoporusuario'

method='POST' action='gerar_relatorio.php' target='_blank'>

<input name='tipoform'

value='Acessos por Usuario' type='hidden'></input>

<table>

<tr>

<td></td>

<td>Nome</td>

<td>Perfil</td>

</tr>

<?php

try

{

$select-

>pesquisarUsuarioTodos();

if($select->registro)

{

foreach ($select-

>registro as $usuario)

{

print ("<tr>

<td><input type='radio' name='idusuario'

value='$usuario[idusuario]'></input></td>

<td>$usuario[nome]</td>

<td>$usuario[perfil]</td>

629

</tr>");

}

print("</table>

<input

name='Visualizar' type='submit' value='Visualizar' />

</form>

<br />");

}

else

{

print("</table>

</form>

<p>N&atilde;o

h&aacute; usu&aacute;rios cadastrados</p>");

}

}

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

$hoje = date('d/m/Y');

$mes = date('m/Y');

$ano = date('Y');

print("<h4>Por Per&iacute;odo</h4>

<form name='frmacessoporperiodo'

method='POST' action='gerar_relatorio.php' target='_blank'>

<input name='tipoform'

630

value='Acessos por Data' type='hidden'></input>

<input type='radio'

value=$hoje name='data'>&nbsp;&nbsp;Hoje</input><br />

<input type='radio'

value=$mes name='data'>&nbsp;&nbsp;M&ecirc;s atual</input><br />

<input type='radio' value=$ano

name='data'>&nbsp;&nbsp;Ano atual</input><br />

<br /><br />

<input name='Visualizar'

type='submit' value='Visualizar'></input>

</form>");

?>

<br /><hr /><br />

<h3>A&ccedil;&otilde;es</h3>

<h4>Por Usu&aacute;rio</h4>

<form name='frmacessoporusuario'

method='POST' action='gerar_relatorio.php' target='_blank'>

<input name='tipoform'

value='Acoes por Usuario' type='hidden'></input>

<table>

<tr>

<td></td>

<td>Nome</td>

<td>Perfil</td>

</tr>

<?php

try

{

$select-

>pesquisarUsuarioTodos();

631

if($select->registro)

{

foreach ($select-

>registro as $usuario)

{

print ("<tr>

<td><input type='radio' name='idusuario'

value='$usuario[idusuario]'></input></td>

<td>$usuario[nome]</td>

<td>$usuario[perfil]</td>

</tr>");

}

print("</table>

<input

name='Visualizar' type='submit' value='Visualizar' />

</form>

<br />");

}

else

{

print("</table>

</form>

<p>N&atilde;o

h&aacute; usu&aacute;rios cadastrados</p>");

}

}

632

catch (Exception $erro)

{

echo "Erro:" . $erro-

>getMessage();

}

$hoje = date('d/m/Y');

$mes = date('m/Y');

$ano = date('Y');

print("<h4>Por Per&iacute;odo</h4>

<form name='frmacessoporperiodo'

method='POST' action='gerar_relatorio.php' target='_blank'>

<input name='tipoform'

value='Acoes por Data' type='hidden'></input>

<input type='radio'

value=$hoje name='data'>&nbsp;&nbsp;Hoje</input><br />

<input type='radio'

value=$mes name='data'>&nbsp;&nbsp;M&ecirc;s atual</input><br />

<input type='radio' value=$ano

name='data'>&nbsp;&nbsp;Ano atual</input><br />

<br /><br />

<input name='Visualizar'

type='submit' value='Visualizar'></input>

</form>");

?>

<br /><br />

<form name='frmacessoporperiodo'

method='POST' action='gerar_relatorio.php' target='_blank'>

<input name='tipoform'

value='Ver Todos os Logs' type='hidden'></input><br />

<input name='verlogs'

type='submit' value='Visualizar todos os Logs'></input>

</form>

633

</div>

</article>

<section class="portfolio-grid clear">

<div class='quarter-grid'>

<a

href='relat_ocorrencias.php'>

<img

src='../imagens/relatorio_ocorrencia.png' alt='Ocorr&ecirc;ncias'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href='relat_ocorrencias.php' title='Ocorr&ecirc;ncias'>

<span>Relat&oacute;rios de Ocorr&ecirc;ncias</span>

</a>

</div>

</div>

<div class='quarter-grid'>

<a href='relat_usuario.php'>

<img

src='../imagens/relatorio_usuario.png' alt='Relat&oacute;rios de Usu&aacute;rio'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href='relat_usuario.php' title='Relat&oacute;rios de Usu&aacute;rio'>

<span>Relat&oacute;rios de Usu&aacute;rio</span>

634

</a>

</div>

</div>

<div class='quarter-grid'>

<a href='relat_ativo.php'>

<img

src='../imagens/relatorio_ativo.png' alt='Relat&oacute;rios de Ativo'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a href='relat_ativo.php'

title='Relat&oacute;rios de Ativo'>

<span>Relat&oacute;rios de Ativo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

635

href="index.php">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.10.4 Página relat_ocorrencias.php

<?php

session_start();

?>

636

<!DOCTYPE html>

<html class="has-js" lang="pt-BR">

<head>

<link title="default" rel="stylesheet" type="text/css"

href="../comum.css">

<script type="text/javascript">

function toggleContent()

{

// Get the DOM reference

var contentId =

document.getElementById("main-nav");

// Toggle

contentId.style.display == "block" ?

contentId.style.display = "none" : contentId.style.display = "block";

}

</script>

<meta http-equiv="Content-Type"

content="text/html; charset=utf-8">

<title>PinGO PHP - Relat&oacute;rio</title>

</head>

<body>

<header class="content-header clear">

<a class="logo" href="../home.php"><i data-

icon="P" aria-hidden="true"></i><span>PinGO</span></a>

<div class="mobile-nav-toggle">

<a href="#"

onclick="toggleContent()">Menu</a>

</div>

637

<nav class="main-nav" id="main-nav">

<ul class="main-nav-anchors">

<li><a

href="../inventario">Invent&aacute;rio</a></li>

<li><a

href="../monitoramento">Monitoramento</a></li>

<li><a

href="../administracao">Administra&ccedil;&atilde;o</a></li>

<li><a

href="index.php">Relat&oacute;rio</a></li>

</ul>

</nav>

</header>

<article class="center-column">

<div class="article-content">

<h1>Relat&oacute;rio</h1>

<h2>Ocorr&ecirc;ncias</h2>

<h3>Selecione o tipo de ativo para

ver as ocorr&ecirc;ncias relacionadas</h3>

<form name="frmrelatocorrencia"

method="POST" action="gerar_relatorio.php" target="_blank">

<input name="tipoform"

value="Ver Ocorrencias" type="hidden"></input>

<input type="radio"

name="ativo" value="Estacao">&nbsp;&nbsp;Esta&ccedil;&atilde;o</input><br /><br

/>

<input type="radio"

name="ativo" value="No de Rede">&nbsp;&nbsp;N&oacute; de Rede</input><br

/><br />

<input type="radio"

name="ativo" value="Dispositivo">&nbsp;&nbsp;Dispositivo</input>

<br /><br />

<input name="Visualizar"

638

type="submit" value="Visualizar" />

</form>

</div>

</article>

<section class="portfolio-grid clear">

<div class='quarter-grid'>

<a

href='relat_ocorrencias.php'>

<img

src='../imagens/relatorio_ocorrencia.png' alt='Ocorr&ecirc;ncias'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href='relat_ocorrencias.php' title='Ocorr&ecirc;ncias'>

<span>Relat&oacute;rios de Ocorr&ecirc;ncias</span>

</a>

</div>

</div>

<div class='quarter-grid'>

<a href='relat_usuario.php'>

<img

src='../imagens/relatorio_usuario.png' alt='Relat&oacute;rios de Usu&aacute;rio'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a

href='relat_usuario.php' title='Relat&oacute;rios de Usu&aacute;rio'>

639

<span>Relat&oacute;rios de Usu&aacute;rio</span>

</a>

</div>

</div>

<div class='quarter-grid'>

<a href='relat_ativo.php'>

<img

src='../imagens/relatorio_ativo.png' alt='Relat&oacute;rios de Ativo'>

</a>

<div class="portfolio-button"

onmouseover="this.className='portfolio-button fader'"

onmouseout="this.className='portfolio-button'">

<a href='relat_ativo.php'

title='Relat&oacute;rios de Ativo'>

<span>Relat&oacute;rios de Ativo</span>

</a>

</div>

</div>

</section>

<footer class="content-footer">

<div>

<ul>

<li><p><a

href="../inventario">Invent&aacute;rio</a></p></li>

<li><p><a

href="../monitoramento">Monitoramento</a></p></li>

<li><p><a

640

href="../administracao">Administra&ccedil;&atilde;o</a></p></li>

<li><p><a

href="index.php">Relat&oacute;rio</a></p></li>

</ul>

<ul>

<li><h6>Usu&aacute;rio:&nbsp;&nbsp;<?php echo

$_SESSION['nome'] ?></h6></li>

<li><h6>&Uacute;ltimo

Acesso:&nbsp;&nbsp;<?php echo $_SESSION['ultimoacesso'] ?></h6></li>

<li><h6><a

href="../administracao/meus_dados.php">Meus Dados</a></h6></li>

<li><h6><a

href="../logout.php">Sair</a></h6></li>

</ul>

<p> &copy; 2013 <a

href="../home.php">PinGO PHP</a>.</p>

</div>

</footer>

</body>

</html>

15.2.10.5 Página gerar_relatorio.php

<!DOCTYPE html>

<html class='has-js' lang='pt-BR'>

641

<head>

<link title='default' rel='stylesheet' type='text/css'

href='../comum.css'>

<title>PinGO PHP - Relat&oacute;rio</title>

</head>

<body>

<header class='content-header clear'>

<a class='logo' href='#'><i data-icon='P' aria-

hidden='true'></i><span>PinGO</span></a>

</header>

<article class='center-column'>

<div class='article-content'>

<?php

switch ($_POST['tipoform'])

{

case "Acessos por Data" :

{

if(isset($_POST['data']))

{

require_once('../crud/pesquisar.class.php');

$select = new Select();

$select-

>pesquisarAcessoData($_POST['data']);

print("<h3>Acessos</h3>

<h4>Por Data</h4>

642

<table>

<tr>

<td>Data/Hora</td>

<td>Evento</td>

<td>Usu&aacute;rio</td>

</tr>");

foreach($select->registro as

$registros)

{

print("<tr>

<td>$registros[datahora]</td>

<td>$registros[evento]</td>

<td>$registros[nome]</td>

</tr>");

}

print("</table>");

}

else

echo "Per&iacute;odo n&atilde;o

especificado.";

//$select-

>pesquisarAcessoData($_POST['idusuario']);

643

break;

}

case "Acessos por Usuario" :

{

if(isset($_POST['idusuario']))

{

require_once('../crud/pesquisar.class.php');

$select = new Select();

$select-

>pesquisarAcessoUsuario($_POST['idusuario']);

print("<h3>Acessos</h3>

<h4>Por Usu&aacute;rio</h4>

<table>

<tr>

<td>Usu&aacute;rio</td>

<td>Evento</td>

<td>Data/Hora</td>

</tr>");

foreach($select->registro as

$registros)

{

print("<tr>

<td>$registros[nome]</td>

644

<td>$registros[evento]</td>

<td>$registros[datahora]</td>

</tr>");

}

print("</table>");

}

else

echo "Usu&aacute;rio n&atilde;o

especificado.";

break;

}

case "Acoes por Data" :

{

if(isset($_POST['data']))

{

require_once('../crud/pesquisar.class.php');

$select = new Select();

$select-

>pesquisarAcoesData($_POST['data']);

print("<h3>A&ccedil;&otilde;es</h3>

<h4>Por Data</h4>

<table>

<tr>

<td>Data/Hora</td>

<td>Evento</td>

645

<td>Usu&aacute;rio</td>

</tr>");

foreach($select->registro as

$registros)

{

print("<tr>

<td>$registros[datahora]</td>

<td>$registros[evento]</td>

<td>$registros[nome]</td>

</tr>");

}

print("</table>");

}

else

echo "Per&iacute;odo n&atilde;o

especificado.";

//$select-

>pesquisarAcessoData($_POST['idusuario']);

break;

}

case "Acoes por Usuario" :

{

646

if(isset($_POST['idusuario']))

{

require_once('../crud/pesquisar.class.php');

$select = new Select();

$select-

>pesquisarAcoesUsuario($_POST['idusuario']);

print("<h3>A&ccedil;&otilde;es</h3>

<h4>Por Usu&aacute;rio</h4>

<table>

<tr>

<td>Usu&aacute;rio</td>

<td>Evento</td>

<td>Data/Hora</td>

</tr>");

foreach($select->registro as

$registros)

{

print("<tr>

<td>$registros[nome]</td>

<td>$registros[evento]</td>

<td>$registros[datahora]</td>

</tr>");

}

print("</table>");

647

}

else

echo "Usu&aacute;rio n&atilde;o

especificado.";

//$select-

>pesquisarAcessoData($_POST['idusuario']);

break;

}

case "Estacoes por Usuario" :

{

if(isset($_POST['idusuario']))

{

//var_dump($_POST['idusuario']);

require_once('../crud/pesquisar.class.php');

$select = new Select();

$select-

>pesquisarEstacoesUsuario($_POST['idusuario']);

print("<h3>Esta&ccedil;&otilde;es</h3>

<h4>Cadastradas Por

Usu&aacute;rio</h4>

<table>

<tr>

<td>Nome</td>

648

<td>IP</td>

<td>Local</td>

<td>Usu&aacute;rio</td>

</tr>");

foreach($select->registro as

$registros)

{

print("<tr>

<td>$registros[0]</td>

<td>$registros[1]</td>

<td>$registros[2]</td>

<td>$registros[3]</td>

</tr>");

}

print("</table>");

}

else

echo "Usu&aacute;rio n&atilde;o

especificado.";

break;

}

case "Nos de Rede por Usuario" :

{

if(isset($_POST['idusuario']))

{

//var_dump($_POST['idusuario']);

649

require_once('../crud/pesquisar.class.php');

$select = new Select();

$select-

>pesquisarNosderedeUsuario($_POST['idusuario']);

print("<h3>N&oacute;s de Rede</h3>

<h4>Cadastrados Por

Usu&aacute;rio</h4>

<table>

<tr>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Usu&aacute;rio</td>

</tr>");

foreach($select->registro as

$registros)

{

print("<tr>

<td>$registros[0]</td>

<td>$registros[1]</td>

<td>$registros[2]</td>

<td>$registros[3]</td>

</tr>");

}

print("</table>");

}

650

else

echo "Usu&aacute;rio n&atilde;o

especificado.";

break;

}

case "Dispositivos por Usuario" :

{

if(isset($_POST['idusuario']))

{

//var_dump($_POST['idusuario']);

require_once('../crud/pesquisar.class.php');

$select = new Select();

$select-

>pesquisarDispositivosUsuario($_POST['idusuario']);

print("<h3>Dispositivos</h3>

<h4>Cadastrados Por

Usu&aacute;rio</h4>

<table>

<tr>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Usu&aacute;rio</td>

</tr>");

foreach($select->registro as

651

$registros)

{

print("<tr>

<td>$registros[0]</td>

<td>$registros[1]</td>

<td>$registros[2]</td>

<td>$registros[3]</td>

</tr>");

}

print("</table>");

}

else

echo "Usu&aacute;rio n&atilde;o

especificado.";

break;

}

case "Ver Ocorrencias" :

{

if(isset($_POST['ativo']))

{

require_once('../crud/pesquisar.class.php');

$select = new Select();

if($_POST['ativo'] === "Estacao")

{

print("<h3>Ocorr&ecirc;ncias</h3>

<h4>Por

652

Esta&ccedil;&atilde;o</h4>

<table>

<tr>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Data/Hora</td>

</tr>");

$select-

>pesquisarOcorrEstacao();

foreach($select->registro as

$registros)

{

print("<tr>

<td>$registros[2]</td>

<td>$registros[3]</td>

<td>$registros[4]</td>

<td>$registros[1]</td>

</tr>");

}

echo "</table>";

}

elseif($_POST['ativo'] === "No de

Rede")

{

print("<h3>Ocorr&ecirc;ncias</h3>

653

<h4>Por N&oacute; de

Rede</h4>

<table>

<tr>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Data/Hora</td>

</tr>");

$select-

>pesquisarOcorrNoderede();

foreach($select->registro as

$registros)

{

print("<tr>

<td>$registros[2]</td>

<td>$registros[3]</td>

<td>$registros[4]</td>

<td>$registros[1]</td>

</tr>");

}

echo "</table>";

}

else

{

print("<h3>Ocorr&ecirc;ncias</h3>

654

<h4>Por

Dispositivo</h4>

<table>

<tr>

<td>Nome</td>

<td>IP</td>

<td>Local</td>

<td>Data/Hora</td>

</tr>");

$select-

>pesquisarOcorrDispositivo();

foreach($select->registro as

$registros)

{

print("<tr>

<td>$registros[2]</td>

<td>$registros[3]</td>

<td>$registros[4]</td>

<td>$registros[1]</td>

</tr>");

}

echo "</table>";

}

}

else

echo "Ativo n&atilde;o especificado.";

655

//$select-

>pesquisarAcessoData($_POST['idusuario']);

break;

}

case "Ver Todos os Logs" :

{

if(isset($_POST['verlogs']))

{

print("<table>

<tr>

<td>Data/Hora</td>

<td>Evento</td>

<td>Usu&aacute;rio</td>

</tr>");

require_once('../crud/pesquisar.class.php');

$select = new Select();

$select->pesquisarTodosLog();

foreach($select->registro as

$registros)

{

//var_dump($registros);

print("<tr>

<td>$registros[0]</td>

<td>$registros[1]</td>

656

<td>$registros[2]</td>

</tr>");

}

echo "</table>";

}

else

echo "<p>Erro.</p>";

}

}

?>

</div>

</article>

<footer class='content-footer'>

<p> &copy; 2013 <a href='#'>PinGO

PHP</a>.</p>

</footer>

</body>

</html>

657

16 CRONOGRAMA

Atividades/Tempo Abril Maio Junho Julho Agosto Setembro Outubro Novembro

1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

1. Elaboração do Projeto de Estágio

2. Análise de Requisitos

2.1. Descrição do Sistema Existente

2.2. Descrição do Sistema Proposto

3. Análise

3.1. Lista de Casos de Uso

3.2. Diagrama de Caso de Uso

3.3. Diagrama de Classes

3.4. Diagrama de Atividades

4. Projeto

4.1. Diagrama de Caso de Uso

4.2. Diagrama de Classe

4.3. Descrição de Caso de Uso / Diagrama de Sequência

4.4. Mapeamento das Classes

5. Implementação e Teste 01

6. Implementação e Teste 02

6.1. Implementação Final

6.2. Impressão das Telas e Relatórios

7. Implantação

7.1. Manual de Instalação

8. Elaboração do Relatório Final

9. Banca Final

658

17 CONCLUSÃO

O projeto ora em questão contribuiu e muito para a vivência

profissional do aluno-estagiário. As inúmeras variáveis existentes num projeto de

desenvolvimento de software foram sentidas pelo estagiário.

Os prazos foram um problema à parte, sendo uma das maiores

dores de cabeça causadas pelo projeto. Ao aluno ficou perceptível que o

planejamento e gerenciamento do tempo são imprescindíveis para o bom

andamento dum projeto de software.

A documentação também causou preocupação. Ter que registrar

várias informações acerca do projeto, quando o estagiário tinha a noção de processo

rápido, sem burocracia, causaram uma leve frustração. Mas se reconhece a

importância de tal procedimento.

As etapas mais difíceis com certeza foram a elaboração dos

diagramas, usando a ferramenta ASTAH, e a programação em si. Tal dificuldade

depreende-se da importância que ambas têm para o sucesso do projeto. A

programação merece destaque, pois, além de ter de se aprofundar na linguagem

utilizada (PHP), sem contar ainda na necessidade de se utilizar conceitos de HTML e

CSS, havendo muita busca em referenciais teóricos a fim de se chegar ao

desenvolvimento do software de gerenciamento.

Quanto ao levantamento de requisitos, a empresa em estudo,

principalmente o supervisor de campo, além de ser o proprietário e administrador de

redes da empresa, foi essencial para o entendimento da aplicação e delimitação de

seu escopo, pois sua experiência na área de redes de computadores foi ponto forte

para orientação no desenvolvimento.

A aplicação Pingo PHP foi de grande valia para o aprendizado do

estagiário. Para uma melhor efetivação dos testes, a aplicação foi disponibilizada na

Internet, podendo ser acessda através do endereço www.pingophp.qlix.com.br,

usando-se como login: root, e, senha: rootroot.

659

REFERÊNCIAS

KUROSE, James F.; ROSS, Keith W. Redes de computadores e a internet: uma abordagem top-down. 3. ed. São Paulo: Pearson, 2006.

NISHITANI, Paulo Kiyoshi. Redes de computadores: sistemas V. São Paulo: Pearson Prentice Hall, 2010.

TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 2ª edição. São Paulo: Pearson Prentice Hal, 2003.