You are on page 1of 102

UNIVERSIDADE DO OESTE DE SANTA CATARINA - UNOESC

CAMPUS DE VIDEIRA
AREA DE CIENCIAS EXATAS E DA TERRA
CURSO DE CIENCA DA COMPUTA~AO

DESENVOLVIMENTO

DE SISTEMA WEB PARA GERENCIAMENTO


DO SETOR DE BEBIDAS

DIEGO DE COSTA

Orientador:
HERCULANO HAYMUSSI DE BIASI

VIDEIRA-

2011

SC

DE VENDAS

DIEGO DE COSTA

DESENVOLVIMENTO

DE SISTEMA WEB PARA GERENCIAMENTO


DO SETOR DE BEBIDAS

Trabalho

de

apresentado
Computeciio

DE VENDAS

conclusiio

de

curso

ao Curso de Ciencie
da Universidade

da

do Oeste

de Santa Catarina como requisito parcial


para

a disciplina

do titulo

de TCC III para obtenceo

de Bacharel

em

Oiencie

da

Computa9iio

Orientador: Herculano Haymussi De Biasi

VIDEIRA-

2011

SC

DIEGO DE COSTA

DESENVOLVIMENTO

DE SISTEMA WEB PARA GERENCIAMENTO


DO SETOR DE BEBIDAS

DE VENDAS

Trabalho de Conclusao de Curso apresentado

ao

Curso de Ciencia da Computacao da Universidade


do Oeste de Santa Catarina - UNOESC, Campus
de Videira (SC), como parte dos requisitos
obtencao

do titulo de Bacharel

Cornputacao.

Aprovado em

BANCA EXAMINADORA

Prof. Herculano Haymussi De Biasi


Professor Orientador
Universidade do Oeste de Santa Catarina

Prof.
Professor Membro da Banca Examinadora
Universidade do Oeste de Santa Catarina

Prof.
Professor Membro da Banca Examinadora
Universidade do Oeste de Santa Catarina

para

em Ciencia da

Dedico este trabalho aos meus pais, pelo


continuo

apoio

dedicacao

conhecimentos e estudos.

aos

AGRADECIMENTOS

A Deus por me proporcionar aptidao para concluir este trabalho.


A minha famflia, fonte de minha ideologia.
Ao professor Herculano, pela sua orientacao.

professora Lilian, por compartilhar seus conhecimentos.

Ao meu amigo Alessandro Panaccione, por seu apoio e ajuda.


A todos que, de uma forma ou outra, colaboraram para que este trabalho fosse
realizado.

RESUMO

Uma aplicacao desenvolvida


solicitacces

para a arquitetura web (World Wide Web) atraves de

entre cliente e servidor, representa

acessibilidade

geograficamente

portabilidade,

permitindo

um novo conceito baseado em

acessos

sirnultaneos

de

usuaries

distantes. A analise dos processos de vendas da empresa de

bebidas foi realizada atraves de diagramas, detenninando e orientando a criacao do


sistema.

aplicativo

automatiza

os processos

de ernissao

de pedidos

por

representantes, e a adrninistracao da intorrnacao gerada na industria como ernissao


de ordens e retatorios de vendas, permitindo 0 acesso do usuario de qualquer local e
reqlao, Apresentar problemas de comunicacao entre processos e setores, para criar
e definir 0 modele de caso de usc, a usabilidade e seus mcdulos. 0 projeto cria um
sistema robusto e seguro, que consegue aceitar uma grande quantidade de usuaries
conectados com uma taxa significativa de transferencia entre cliente e servidor. As
mtormacoes sao comutadas entre 0 navegador do dispositivo do usuario e 0 servidor
que deve interpretar os dados, incluindo e selecionando a intorrnacao disponivel no
banco de dados. Utilizando tecnologias como a linguagem PHP e banco de dados
MySQL e possivel
construcao
servidor

garantir

todos os requisitos

e desenvolvimento.

0 desempenho

pode ser complementado

utilizando

tecnicos

exigidos

da cornunicacao
0

para a sua

entre cliente e

metoda Ajax, esta metodologia

pennite que a resposta seja mostrada no navegador sem a necessidade que a


paqina seja reprocessada.

Os rnodulos da aplicacao

sao capazes de realizar

funcoes de envio de e-mails, gera~ao de documentos, tratamento de sessoes, entre


outras. A validacao dos formularies pode ser realizada no proprio navegador do
cliente, otimizando

desempenho,

nao necessitando

servidor. Buscou-se analisar as caracteristicas

aguardar uma res posta do

ideais para 0 banco de dados e

servidor web, garantindo que a aplicacao seja confiavel e ativa.

Palavras chave: Web. PHP. MySQL. Autornafizacao.

ABSTRACT

An application
requirements
accessibility

developed

for the architecture

web (World

between client and provider, represents

Wide Web) through

a new concept

based on

and portability, allowing accesses from users at the same time. The

analysis of the processes of sales of the company of drink was realized through
diagrams,

determining

and giving orientation to the creation of the system. The

applicative automatizes the processes of


the administration

demand emission by representatives, and

of the information created in the company such as the demand

emission and sales reports, allowing the user's access of any place and region. To
present problems of communication between processes and departments, to create
and to define the usage case model, defining its usage and its modules. The project
must create a robust system, safe that can accept a great quantity of connected
users, a meaningful rate of transference between client and provider is essential. The
pieces of information are commutated

between the browser of the user and the

provider that has to interpret the data. Using technologies as the PHP language and
MySQL data bank is possible to guarantee all the technical requirements demanded
for its constructions

and development.

The performance

between client and provider can be complemented

of the communication

using the Ajax Method; this

methodology allows the answer to be showed in the browser without the need of the
page being reprocessed. The modules of the application are able to fulfill functions of
sending of e-mails, documentation
validation

creation, sections treatment, and the like. The

of the forms can be realized from the browser

itself, optimizing

the

performance, not being necessary to wait for an answer from the provider. The ideal
characteristics were searched for the data bank and web provider, guaranteeing the
application to be reliable and active.

Key words: Web. PHP. MySQL. Automatization

SUMARIO

1 INTRODUCAO

10

1.1 OBJETIVO GERAL

11

1.2 OBJETIVOS ESPECiFICOS

11

1.3 JUSTIFICATIVA

11

2 DESENVOLVIMENTO ........................................................................................

13

2.1 BUSINESS TO BUSINESS (B2B)

13

2.2 APLICACAo

14

WEB

2.3 PROTOCOLO HTTP

15

2.3.1 Common Gateway Interface (CGI)

16

2.3.2 Metodos GET e POST

17

2.4 LlNGUAGEM DE MARCACAo

DE HIPERTEXTO (HTML)

18

2.5 CASCADING STYLE SHEETS (CSS)

19

2.6 LlNGUAGEM PHP

19

2.6.1 Hist6ria

20

2.6.2 Caracteristicas

21

2.6.3 Envio de e-mails

22

2.6.4 Biblioteca FPDF

23

2.6.5 SessOes

24

2.6.5.1 Sessao

24

2.6.5.2 Cookies

25

2.6.6 Seguranc;a

26

2.6.6.1 Message Digest Cinco (MD5)

26

2.6.6.2 lnjecao de SQL

27

2.7 BANCO DE DAD OS MYSQL

27

2.7.1 Tipos de tabela

28

2.7.2 Integridade

referencial

30

2.7.3 Suporte a transacoes

31

2.7.4 phpMyAdmin

31

2.8AJAX

32

2.8.1 XML

34

2.8.2 JavaScript

34

2.8.3 Modelo de Objetos de Documentos


2.8.4 Requisi~ao

(DOM)

XMLHttp

35
35

2.9 SERVIDOR WEB

36

2.9.1 Servidor Apache

36

2.9.2 XAMPP

37

2.9.3 Microsoft

Internet Information

Services (115)

38

2.10 ADOBE DREAMWEAVER

38

2.10.1 Desenvolvimento

39

de Formularies

2.10.2 Spry

39

2.11 METODOLOGIA

40

2.11.1 Analise de Requisitos

40

2.11.2 Caso de uso e diagrama de sequencia

41

2.11.3 Diagrama de classes

42

2.11.4 Arquitetura

43

geral

2.11.5 Arquivo de conflquracao

44

2.11.6 Conexao com 0 banco de dados

45

2.11.7 Autentlcacao

46

de usuario

2.11.8 Cadastros
2.11.9 lnclusao

47
de pedidos

48

2.11.10 tnclusao e baixa de ordens de carregamento

49

2.11.11 Relat6rios

49

2.11.12 Logoff

50

2.11.13 Tratamento e conversao

de dados

51

2.11.14 Confirrnaedes e avisos em JavaScript

53

2.11.15 Envio automatlco

54

de e-mails

2.11.16 Menus e departamentos

55

3 CONCLUSAO

57

REFERENCIAS

59

APENDICES

63

APENDICE A - Diagrama de sequencia

64

APENDICE B - Diagrama de classes

65

APENDICE C - C6digo HTMl do torrnulario para a autentlcacao do usuario

66

APENDICE D - C6digo PHP utilizado para cadastro

67

APENDICE E - C6digo de inclusao de pedidos

69

APENDICE F - C6digo de lnclusao e baixas de ordens

71

APENDICE G - Veritlcacao de departamento e usuario logado

73

APENDICE H - Sintaxe Sal para criacao das tabelas do banco de dados

75

ANEXOS

77

ANEXO A - C6digo JavaScript para validacao de CNPJ e CPF

78

10

1 INTRODUCAO

A automatizacao

dos processos de vendas

e importante

para a deterrninacao

de resultados e qualidade das intorrnacoes. Analisar os problemas de gerenciamento


de vendas e logistica de carregamento
etapa

inicial

para

desenvolvimento
diagramas

deterrninacao

em uma empresa no setor de bebidas


das

caracteristicas

funcionais

do sistema que deve auxiliar 0 gerenciamento

facilita

a visualizacao

ajudando 0 desenvolvimento,
Atraves dos diagramas

dos requisitos

ea

para

comercial. Utilizar

que 0 aplicativo

deve possuir,

a documentacao e a concepcao de novas versoes.

e possivel

determinar as tabelas a serem criadas no

MySQL, este banco de dados e utilizado por grandes portais pelo mundo inteiro,
demonstra uma grande estabilidade e desempenho para web, nao necessitando de
muitos recurs os de hardware no servidor onde se encontra.
Para atender
funcionais

e utilizado

criando diversos

todas

as condicoes

necessaries,

proposta

pelos objetivos

um browser como uma ferramenta para execucao de software,

beneffcios

na facilidade

de utilizacao

e na disponibilidade

sistema. Para maximizar 0 desenvolvimento e 0 desempenho proposto,

e utilizada

do
a

linguagem PHP (PHP: Hypertext Preprocessor) que possui uma grande quantidade
de extensoes
permitindo

e bibliotecas

uma vasta

disponiveis

diversidade

para criar um portal segura e funcional,

de mecanismos

para

gerenciar

os dados

armazenados, inclusoes e tratamentos.


Cada paqina de c6digo PHP
tela em especifico,

e responsavel

por realizar uma funcao, em uma

dentro de um modulo responsavel

por determinada

entidade,

como por exemplo, cliente e pedido. Os acessos a esses m6dulos e fungoes sao
gerenciados
criado

niveis

con forme 0 departamento


de acessos

aos dados,

cadastrado

no usuario. Desta maneira

onde sao disponibilizados

conforme

e
a

necessidade do processo em um determinado setor. A intorrnacao fica protegida de


vazamentos, totalmente direcionada e simplificada ao utilizador.
A compatibilidade

entre as detinicoes

tecnicas de linguagem e banco de

dados deve ser garantida na utilizacao de um servidor web que suporte gerenciar a
execucao do PHP, sua cornunicacao com 0 banco de dados e 0 processamento

de

entrada e saida de lntorrnacoes gerada com a comunicacao aos navegadores dos

11

usuaries. Um perfodo de testes e hornoloqacao do sistema garante uma qualidade


superior na sua operacionalidade,

superando dificuldades prirnarias de consertos de

erros com a venncacao na compatibilidade da estrutura disponivel.


propostas

de testes locais no computador

do programador

incispensavel

e hornoloqacao

no

servidor da empresa.

1.1 OBJETIVO GERAL

Desenvolver

um sistema web para gerenciamento

de vendas do setor de

bebidas.

1.2 OBJETIVOS ESPECiFICOS

Analisar posstvel automatizacao entre os processos de venda de bebidas;

Pesquisar definicoes de sistema web;

Desenvolver a aplicacao com linguagem PHP;

Melhorar os process os utilizando vatidacoes em JavaScript;

Crias as tabelas e conexao com banco de dados MySQL;

Determinar os beneffcios de um sistema automatizado;

1.3 JUSTIFICATIVA

Uma aplieacao web

e interpretada

por navegadores de varias plataformas,

garantindo uma grande compatibilidade com todos os usuaries do sistema que estao
localizados por todo pais, independente se estes usam um computador com sistema
operacional

especlfico

ou algum laptop e celular. S6 havera a necessidade

de

12

conexao com a internet, a qual hoje existe a disponibilidade

em diversas formas e

em quase qualquer lugar.


Um procedimento

padrao

de envio de pedidos

problemas de formatos de arquivos incompatfveis

sera criado,

eliminando

com 0 da empresa, e 0 envio

informal de pedidos por meio de telefone e fax. A soma de resultados totais de


impostos e mercadoria

de forma automatizada,

criando um conjunto de dados

comercias consistente.

o sistema

exige do usuario a insercao de todas as intormacoes necessarias

para garantir a qualidade dos processos, e nao ocasionar problemas na entrega da


mercadoria, cobranca, nota fiscal incorreta ou qualquer outro. Facilitando a criacao
de ordens
digitagao

a partir dos pedidos


duplicada

das

lancados,

inforrnacoes,

evitando

deixando

desperdicio
os

de tempo

processos

de

em

venda,

carregamento e entrega rnais agil.


Opcoes de relat6rios gerenciais com dados precis os para a diretoria, relat6rio
de venda por estado,

representante,

produto e muitos outros que podem ser

incluldos no aplicativo conforme a necessidade da empresa.

desenvolvimento

desse aplicativo ira fornecer uma melhor condicao de

trabalho a todos os usuaries, que poderao se concentrar em atender a demanda de


pedidos, sendo que os dados processados serao preservados e utilizados de forma
eficiente, sem conferencias manuais adicionais, diferente do que se faz em envio e
recebimento de planilhas ou conversas por telefone.
A emissao on-line e a visualizacao de pedidos e ordens internas da empresa
vao garantir uma grande economia em papel, visto que nao
folhas para serem encaminhadas

entre os departamentos,

e preciso

imprimir as

com isso contribuindo

com 0 meio ambiente na reoucao do desmatamento para tabncacao de papel.


Fica claro que a centrauzacao das intormacces
arquitetura
acessivel.

web facilita a inteqracao

entre diversos

da empresa

em uma

setores, criando um padrao

13

2 DESENVOLVIMENTO

As intorrnacoes trocadas e armazenadas


parceiros

e de

entre a empresa e seus clientes e

grande valor para 0 gerenciamento

e a sobrevivencia

no mercado.

Segundo Stallings (2003, p. 5):


Uma empresa sob revive e prospera com intormacoes: as inforrnacoes
dentro da orqanizacao e as intormacoes trocadas com fornecedores, cliente
e agencias
reguladoras. Alern do mais, a mtorrnacao precisa ser
consistente, acessivel e estar no local certo.

utilizacao

constantemente

de

um software

para

gerenciamento

de

mtormacao

utilizada por conseguir uma 6tima orqanizacao e acessibilidade. A

construcao de sistemas on-line ou portais amplia as possibilidades de gestao. Um


portal sendo 0 centro de integra9ao
acessibilidade

entre intormacoes

e sistemas,

aumenta

aos dados que estao arquivados, ao alcance em qualquer ponto de

internet, agilizando as tomadas de decisoes e 0 tempo.

essencial construir um

sistema robusto, seguro, que consiga aceitar uma grande quantidade de usuaries
conectados, com uma taxa significativa de transterencia entre cliente e servidor.
Em qualquer conteudo web, 0 c6digo fonte

dividido em dois conceitos, a

paqina do servidor que possui scripts interagindo entre si, somente no servidor e
totalmente invisivel para 0 browser (navegador) do cliente, que so recebe conteudo
atraves

de um protocolo

especifico.

As paginas

do cliente escritas

por uma

linguagem que 0 navegador interpreta, possibilitando a interacao do usuario. Esses


conceitos trabalham sempre junto em uma aplicacao web.

2.1 BUSINESS TO BUSINESS (B2B)

o B2B e 0 processo

eletr6nico de neg6cios entre as empresas para compras

e vendas. As transacoes comerciais sao realizadas totalmente atraves de softwares


substituindo processos fisicos. Conforme McLean, Turban, Wetherbe (2002, p. 175)
descreve:

14

Nas apucacoes B2B os compradores e os vendedores sao empresas. 0


B2B representa a maior parte do volume do comercio eletrenico, cobrindo
um largo espectro de aplica90es quer permitem a uma empresa ou a um
setor economico estabelecer relacionamentos eletronicos com seus
distribuidores, revendedores, fornecedores, clientes e outros parceiros.

Atraves da internet
criada pelas transacoes,

possivel

a troca do grande volume de intorrnacoes

garantindo dados em tempo real para a orqanizacao

eficiencia interna da empresa. Com a acessibilidade criada pela internet

e possivel

aumentar

garantindo

quantidade

interconexoes

entre

de

entidades

divers os servidores,

intorrnacao, garantindo compatibilidades


entre entidades

envolvidas

no

aplicativo

descentralizando

ou centralizando

entre filiais ou empresas. A compatibilidade

de neqocios assegura a automatizacao de qualquer operacao,

possibilitando uma quantidade express iva de transacoes, Como 0 controle eletronico


comercial

e padronizado

gera resultados de conhecimento com base de intormacao

precisa.
Os aplicativos de B2B permitem que a empresa possa atender uma grande
demanda

de clientes

e parceiros,

compras

a qualquer

hora.

disponibilizando

0 limite

operacional

diversos

dados

se concentra

sobre suas
somente

em

investimentos fisicos e virtuais na area de tecnologia da intormacao.

2.2 APLICACAo

WEB

Aphcacao web
na intemet

e qualquer

sistema executado atraves de um navegador, seja

ou em redes privadas,

localizado

em um servidor

web, as quais

transferem dados da maneira cliente e servidor (TURBAN; MCLEAN; WETHERBE,


2002).
o navegador solicita ou envia intormacoes a ser processada no servidor, este
devolve ao cliente onde 0 navegador imprime 0 resultado, se difere de um site, pois
existe um nivel siqnificativo de regras e interacoes das informacoes entre os lados
de servidor e cliente. 0 usuario do sistema web pode utilizar 0 sistema de qualquer
local que possua conexao com a internet, nao existe a necessidade que ele possua
o conhecimento de onde a aplicacao e 0 banco de dados estao armazenados, pois

15

esta pode estar em qualquer servidor ou data center, em qualquer local do planeta.
A simplicidade da atualizacao e rnanutencao nas aplicacoes web representa uma de
suas principias caracteristicas, visto que e necessario aplicar as rnudancas somente
nos servidores on de 0 c6digo fonte esta localizado, no pr6ximo acesso que 0 usuario
realizara, ja estara aces sando a versao atualizada do sistema. Existem diversas
linguagens para web, onde pode ser construidos

sistemas de diversos interesses,

em quase qualquer plataforma.

2.3 PROTOCOLO HTIP

Gourley e Totty (2002) definem 0 Hypertext Transfer Protocol (HTIP)

como

uma metodologia de comurucacao utilizada para troca de dados entre 0 navegador e


o servidor web. Este protocolo

e utilizado quando algo e digitado na barra de

enderecos do navegador, seja ela uma aplicacao ou um site, a transterencia

da

paqina ate a plataforma do cliente e suas respostas ao servidor web sao realizadas
com este protocolo. A cornunicacao HTTP entre 0 cliente e servidor e feita atraves de
mensagens.

0 cliente envia mensagens

de requisicao

e 0 servidor envia uma

mensagem de resposta para 0 cliente.


As mensagens enviadas e recebidas sao compostas por cabecalho e corpo.

cabecalho

contern intorrnacoes

especificas de confiquracao

de servidor ou de

cliente, e 0 corpo da mensagem contern os dados que serao tratados pelo Hypertext
Markup Language (HTML) como texto, imagem ou ate mesmo um arquivo para
download.

o
cliente

protocolo utiliza alguns rnetodos para transterencias

e servidor,

esses

rnetodos sao utilizados

como

de intorrnacoes entre
pad roes por diversas

linguagens e por c6digos HTML para envio de torrnularios ao servidor.

16

2.3.1 Common Gateway Interface (CGI)

Common Gateway Interface (CGI) e uma tecnologia

utilizada nos servidores

web para tornar a aplicacao interativa. Essa tecnologia permite que 0 browser do
cliente passe parametres para serem processados no servidor. Os scripts CGI geram
as paginas com base das variaveis enviadas pelo cliente. Sao ativados pelo HTML,
que informa 0 metoda utilizado para envio dos parametres.
Um servidor web pode ser configurado para aumentar 0 nivel de interatividade
com 0 cliente como afirma Della Valle e Ulbrich (2005, p. 201):
Os servidores HTTP podem ser amplamente estendidos com a acocao de
mecanismos que permitam 0 chamado conteuoo dinamlco. uma tecnologia
que possibilita a montagem de paginas personalizadas e de conteudo
variavet para cada visitante e acesso.

A personalizacao do conteudo e da intormacao

e a principal

um script CGI, isso permite que a aplicacao web aumente

caracteristica

de

sua habilidade

de

cornpreensao do usuario.
A interface criada

responsavel

por um ciclo de solicitacoes

feitas pelo

cliente, com 0 acesso ao conteudo HTML, que se en contra no servidor e 0 envio de


dados com um retomo, garantindo a interatividade
abaixo retrata os principais procedimentos que 0 CGI
garantir 0 processamento e cornunicacao.

com 0 usuario. 0 fluxograma

e incumbido

de interagir para

17

o ClIENTE solicita
uma URL ao servidor

ClIENTE

SERVIDOR

WWW

WWW

formrtll e

A URl solicitada
umCGI eo SER\I100R
executa 0 CGI

apresenta
a infonna~o
recelJjda

...

CGI

o CGltrabalhil
chamando outros
prolJ"amas

OUTROS
PROGRAMAS

Fluxograma 1: Common Gateway Interface


Fonte: Otsuka L. (1999)

Atraves de uma Uniform Resource Locator (URL), e solicitado ao servidor web


e ao CGI para que disponibilizem

conteudo para ser tratado e formatado pelo

browser do cliente. Com esse conteudo, 0 navegador pod era enviar e receber dados
previstos no c6digo HTML. Enquanto que 0 CGI ficara responsavel para encaminhar
ou receber as informacoes do aplicativo correto, contido no servidor.

2.3.2 MIHodos GET e POST

o metoda

GET e uma forma de transmitir dados atraves do protocolo HTTP.

Com a uthzacao deste procedimento, os parametros e variaveis sao introduzidas em


forma de string na URL de destino. A URL e form ada pela paqina de destino, um
ponto de interroqacao ("?"), que delimita 0 corneco dos dados, 0 nome da variavel, 0
conteudo

da variavel

e demais dados, normalmente

separadas

por caracteres

especiais como simbolos comercial ("&"). Todo 0 endereco e os dados podem ser
observados na barra de enderecos do navegador apos 0 envio a paqina de destino
(MUTO, 2006).

Diferente do rnetodo GET, a metodologia POST nao informa 0 nome e 0 valor


das variaveis pela URL. Os dados sao enviados diretamente por uma mensagem do
protocolo HTTP, utilizando este metodo 0 nome das variaveis que serao tratadas no
servidor

ficam invisiveis

informando

variaveis

para 0 usuario,

ou valores

impossibilitando

manualmente.

um possivel

POST

ataque

uma solucao

muito

utilizada para envio de torrnularios HTML com diversas intormacoes.


Para recepcao dos dados no script do servidor algumas linguagens criarn um
array diferente para cada rnetodo, que pode ser consultado por outras tuncoes.

2.4 LlNGUAGEM DE MARCACAo

A linguagem HTML

DE HIPERTEXTO (HTML)

e utilizada

para produzir paginas web. Sao interpretados

por navegadores para gerar paginas estaticas. Foi criada em 1990 por Tim BernsLee com a finalidade de tornar possivel 0 acesso e a troca de intorrnacoes entre
seus colegas. Com a disserninacao do padrao HTML em toda internet, em 1994 foi
criado a World Wide Web Consortium (W3C), 0 cons6rcio intemacional da internet,
que tinha como objetivo a padronizacao

e rnanutencao

do HTML, entre outras

linguagens criadas posteriormente (LOGMAN, 1998).


o arquivo com extensao ".html".ou ".htm" fica armazenado no servidor web, 0
navegador do cliente solicita 0 conteudo, rea Iizan do 0 download do arquivo
HTML. Com 0 arquivo na plataforma do cliente, 0 navegador

interpreta e

mostra seu
conteudo formatado.
Um c6digo HTML
dos simbolos

e formado

por tags, as quais possuem comandos dentro

menor que "e" e maior que U>". Essas tags dividem 0 conteudo

permitindo uma tormatacao especffica. Alguns elementos como imagens, anirnacoes


e a linguagem JavaScript podem ser adicionadas entre os c6digos HTML.

2.5 CASCADING STYLE SHEETS (CSS)

CSS
em

e uma

linguagem

linguagem para construcao de aparencia em documentos escritos

de rnarcacao.

Foi desenvolvido

pela W3C

com 0 objetivo

de

padronizar a custornizacao de conteudo web. Remoaldo (2008) afirma que 0 estilo e


caracteristicas
linguagem

visuais

de uma paqina devem

CSS. A linguagem

ser completamente

deve ser incorporado

descritos

na

ao HTML, diretamente

ou

atraves de um link para um arquivo "css".


A utilizacao de torrnatacao atraves de c6digos CSS facilita 0 desenvolvimento,
reduzindo a quantidade instrucces. Con forme Somera (2006 p. 10):

A linguagem HTML tarnbern pode ser usada para definir 0 layout de web
sites. Contudo, a CSS proporciona mais opcoes,
mais precisa e
sofisticada, alem de ser suportada pela maioria dos navegadores atuais. A
principal diterenca entre HTML e CSS
que 0 primeiro
usado para
formatar conteudos eo segundo para conteudos ja estruturados.

CSS permite um controle de layout de varies documentos HTML, com um

simples arquivo, facilitando sua manutencao.


grande porte,

e muito

diffcil garantir a mesma torrnatacao configurada em todas as

paginas. Com a utilizac;:ao de um arquivo CSS


confiquracao

padrao

modlticacao

do

No caso de portais e aplicativos de

para ser utilizado

layout

no

arquivo

e possivel

em todas
CSS,

as

definir blocos, com uma

as paginas.
paginas

Com qualquer

serao

modificadas

automaticamente.

2.6 LlNGUAGEM PHP

PHP (PHP Hypertext

Preprocessor)

uma linguagem

scripts executados no servidor, foi projetada especificamente


embutido

para criacao de

para web. Pode ser

em um c6digo HTML, quando este c6digo executar em um cliente,

solicitado algo ao servidor web, 0 PHP ira executar e retornar as intormacoes para 0
navegador. Por ser interpretado no servidor, 0 usuario s6 consequira ler as tags em
HTML e nao 0 c6digo em PHP. Essa solucao apresenta ser veloz e multiplataforma.

A sua capacidade e muitas vezes colocada a prova em sites e portais com milh6es
de acessos.
redistribuido

Por ser de c6digo-fonte

aberto,

pode ser usado,

modificado

com novos m6dulos sem nenhuma resmcao (MELO; NASCIMENTO,

2007).
As variaveis

sao verificadas

dinamicamente

pela linguagem,

ou seja, e

possivel armazenar diversos tipos de dados durante a existencia da variavel, sem a


necessidade

de declarar seu tipo na criacao. Quando 0 PHP for interpretado,

identificado 0 conteudo, verificando em tempo de execucao

2.6.1 Hist6ria

Foi criada em 1994 por Rasmus Lerdof, como um pacote CGI para sua
paqina pessoal, que ate aquele momento era utilizado um conjunto de scripts Perl. 0
autor Muto (2006), afirma que a primeira versao do PHP, ainda com nome de
PHP/FI, ja possuia um interpretador conhecido como FI (Form Interpreter) e varias
caracterfsticas

encontradas

ate nas versoes dos dias atuais, como interpretacao

autornatica de variaveis vindas de tormulario, sintaxe embutida no HTML e suporte


ao banco de dados MySQL.
Ap6s a construcao e a disponibilizacao das primeiras versoes da linguagem, 0
PHP recebeu apoio da comunidade livre, de acordo com Melo e Nascimento (2007
p. 21): "Assirn como ocorreu com 0 sistema operacional Linux, diversos entusiastas
do software livre tomaram conhecimento do pacote PHP/FI, os quais passaram a
contribuir e acrescentar suas ideias ao mesmo". A acessibilidade

ao c6digo-fonte,

concedido pelo autor ajudou para populartzacao global do PHP.


Entre os anos de 1996 e 1997 a linguagem ja era utilizada em cerca de
quinze mil sites espalhados em varies servidores (MORAZ, 2005).
De acordo com 0 PHP Group (2010), a versao tres desenvolvida
Gutmans e Zeev Suraski, [a existia a possibilidade

por Andi

de criar c6digos orientados

objetos e heranca, adaptacao da linguagem para novos protocolos da internet e


suporte para a maioria dos ban cos de dados. 0 PHP tres foi

primeira versao a

possibilitar a utilizagao de extensoes, que por sua vez atraiu diversos programadores
para

desenvolvimento

de

m6dulos.

Renomeada

para

PHP:

Hypertext

21

Preprocessor, conforme a atribuicao de nomes recursiva do GNU (GNU = GNU's Not


Unix), foi lancada em 1998, e no final do mesmo ano ja contava com instalacao em
10% dos servidores web.
Na sua quarta versao foi aprimorado para cobrir diversas necessidades
solucionar

alguns inconvenientes

que apresentavam

caracterfstica mais significativa para a versao quatro

em sua versao anterior. A

e sua

rapidez que foi concebido

atraves da rnudanca de seu motor, no PHP quatro 0 c6digo

e compilado

e depois

executado, enquanto que antes era compilado e executado ao mesmo tempo. Com
uma independencia maior do servidor web, a linguagem se tomou mais po rtave I e
dinamicamente

mais interpretada

por outros sistemas operacionais

diversos.

versao cinco lancada em 2004 contava com diversas funcionalidades


um melhor gerenciamento

da mem6ria e a utilizacao

novas, como

de ponteiros

no c6digo,

eliminando a necessidade de copia de objetos que era necessaria na versao nurnero


quatro. Introduzindo 0 conceito de handlers, ou seja, apontadores,
implernentacao

de somente

um objeto, e a necessidade

foi possfvel a

de copiar somente 0

ponteiro, sendo assim quando 0 objeto sofrer alguma rnudanca, esta se aplicara em
todo lugar onde contenha a instancia do ponteiro. 0 novo suporte ao banco de
dados MySOL foi melhorado. Souza (2007) descreve que com a versao cinco do
PHP houve a inclusao

da interpretacao

de comandos

SOL (Structured

Query

Language) via extensao MySOLi que permitiu ao PHP, a compatibilidade com novas
funcionalidades disponibilizadas pela versao 4.1 do banco de dados.

2.6.2 Caracteristicas

A linguagem PHP tem como escopo principal, 0 desenvolvimento web, ainda


que exista projeto para a unuzacao em proqramacao

fixa, ou seja, desktop. SUa

sintaxe e tuncoes muito parecidas com C e C++ permitem que programadores


consigam

adaptarem-se

simplicidade.

Seu objetivo

com essa linguagem

mais rapidamente,

qracas a sua

a criacao de sistemas que possibilitam a qeracao de

conteudo dinarnico para paginas da internet, onde 0 usuario possa interagir de uma

22

forma on de suas acoes tacam surgir efeitos na aplicacao, ou seja, a insercao de


lntorrnacoes possa trazer um feedback para 0 cliente.
A identificacao feita pelo servidor para detectar 0 inicio do c6digo PHP que
esta embutido no HTML e procurando pelo conjunto de caracteres "<?php" e "?",
qualquer comando que estiver entre essas tags sera interpretada pelo servidor e seu
c6digo nao sera enviado para 0 c1iente. Os arquivos que contenham instrucoes PHP,
devem possuir em sua extensao a sigla ".php" (WELLING; THOMSON, 2003).
De acordo Ferreira (2010), 0 PHP e totalmente modularizado, a sua alteracao
e possivel com a instalacao de novos m6dulos, tendo a finalidade de aumentar as
suas

funcoes,

Possui

extensoes

para

acesso

a banco

de

dados

MySQL,

PostgreSQL e Oracle. Extensao para criacao de PDF (Portable Document Format),


entre muitas outras,

que contribuem

na constnrcao

de um sistema

linguagem. A manouiacao de arquivos com a linguagem

possibilita

com esta

a criacao de

sistemas dinarnicos de discos virtuais on-line para que os usuaries possam alterar,
excluir, realizar

upload ou download de qualquer

Possui suporte native para diversos protocolos,

arquivo at raves da aplicacao.

podendo expandir ainda mais a

quantidade utilizando bibliotecas de terceiros.

2.6.3 Envio de e-mails

A linguagem PHP permite 0 envio de e-mails at raves da tuncao mail. Esta


tuncao

pode

operar

automaticamente

se for

configurada

para

intorrnacoes definidas em variaveis que podem ser preenchidas

tal,

enviando

com valores do

banco de dados ou de torrnularios. Conforme Muto A. (2006 p. 184):

Uma das grandes vantagens da linguagem PHP


a possibilidade de
mandarmos e-mails pela propria pagina do navegador. E um recurso muito
util quando desejamos enviar dados de confirmacao de um pedido a um
cliente, notifcacao de inclusao em algumas lista de discussao, construcao
de Web Mails, etc.

o envio

de e-mails atraves do script PHP, permite um nivel de interacao maior

com 0 usuario do sistema, que pode ser avisado por e-mail caso haja alguma nova
inclusao de dados no aplicativo. Esta funcao permite que 0 c1iente nao precise entrar

23

no portal para conferir se existe alguma mudanca em informacoes

que sejam

relevantes para ele.


Muto (2006) afirma que com a funl(ao mail,
informando

textos

em suas variaveis

e posslvel

ou incluindo

enviar e-mails apenas

c6digos

HTML, que serao

interpretados no browser ou no gerendador de e-mail. Sao definidos quatro variaveis


para enviar um e-mail, sao elas:

a) Destinatario, que deve conter 0 e-mail para quem a mensagem

e enviada.

b) Titulo, contendo 0 ass unto.


c) Mensagem,o

conteudo do e-mail.

d) Header, cabecalho

contendo

intormacoes

adicionais

como espectticacoes

para HTML.

Utilizando conteudo HTML

posslvel a mclusao de imagens, criando uma

referenda no c6digo para onde a imagem esta localizada, ou seja, em seu local de
hospedagem.

2.6.4 Biblioteca FPDF

A biblioteca

FPDF, e uma classe da linguagem

PHP, que permits gerar

arquivos PDF. De acordo com Antunes Lamim (2010), 0 FPDF

uma biblioteca

flexivel, sendo possivel modificar unidades de medida, formato da pagina, margens,


cabecalhos,

cores,

quebra

de

lin has

entre

outras

opcoes

que

pennitem

rnodficacao do conteudo gerado.


Compativel

com a versao cinco e quatro da linguagem PHP, 0 FPDF nao

utiliza a biblioteca padrao da linguagem, PDFlib, que ja vem embutida no servidor


web, isso compromete um pouco na performance em gerar 0 documento.

Mas 0

nivel de personalizacao que 0 FPDF permite, e sua facilidade de docurnentacao no


site do criador

e em toda comunidade

livre, contribui

por sua utfizacao

em

aplicativos que precisam gerar arquivos com intormacoes provenientes de consultas


a banco de dados ou preenchimento de formularies (PLATHEY, 2008).

24

2.6.5 SessOes

o PHP Group
sessoes

(2010), mantedor oficial do projeto da linguagem PHP, define as

como uma maneira

de preservar

construcao de aplicacoes personalizadas.

dados

subsequentes,

permitindo

Os dados criados sao exclusivos para um

unlco acesso, sao considerados como parametres validos para conceder acessos e
rnoditicacoes especiais.

2.6.5.1 Sessao

o metoda

ssssao na linguagem PHP existe para preservar dados especfficos

ate 0 usuario fechar seu navegador ou a sessao expirar, seja por inatividade ou por
comando do aplicativo.
Segundo Muto A. (2006 p. 158):

[ ... J a nivel de proqrarnacao, uma sessao


uma pequena porcao em que
pode se guardar todos os tipos de variaveis e valores. Esta pequena porcao
conhecida como objeto ssssao, possui uma identificacao [ J que
automaticamente enviada ao usuario quando a sessao
iniciada [ J

Para cada sessao criada por cliente, um arquivo e criado no servidor com 0
mesmo

nome da identiticacao

enviada

ao navegador.

Este arquivo

enquanto a sessao nao expirar ou for destrufda. A administracao

s6 existe

de sessoes no

servidor permite uma flexibilidade para 0 aplicativo ser rnutavel pelas deterrninacoes
das variaveis, em um sistema com usuario e senha, as intorrnacoes referentes ao
cliente pode determinar

seu interesse, ou quais intorrnacoes

usuario podera

acessar.
A sessao
diretamente

um recurso limitado do servidor, pois geralmente

a mem6ria,

sendo assim nao

e recomendado

esta ligado

que se utilize para guardar

inforrnacoes que nao sao necessarias para um usuario em especifico.

25

Conforme Muto (2006) descreve, as principais funcoes para tratamento de


variaveis de sessao sao capazes de realizar operacoes para serem inicializadas,
registradas, editadas, destruldas e consultadas, retomando seus valores.

2.6.5.2 Cookies

as cookies sao fragmentos de textos enviados ao browser do cliente, durante


um periodo de tempo definido, armazenando variaveis distintas. (MUTO, 2006).
Com os cookies

possivel

criar

personalizacao

customizada

para os

usuarlos, cestas de compras em um e-commerce, autenticacao em sistemas, entre


outras possibilidades,

resgatando intorrnacoes e dados do cliente, conforme Muto

(2006 p. 152) afirma:

Atravss de cookies podemos deixar tntormacces (variaveis) armazenadas


na maquina do usuario e resqata-las, quando 0 usuario acessar 0
navegador, a qualquer momento, desde que 0 tempo de expiracao nao
tenho sido ultrapassado.

Armazenar
exclusividade

certas

variaveis

no

navegador

do

cliente

permite

que

de uma rnodificacao no aplicativo web nao seja perdida quando a

paqina for fechada. Quando 0 usuario acessar novamente 0 aplicativo ira verificar
em seu cookie quais sao seus parametres de contiquracao.
a PHP Group (2010) define seis variaveis em um cookie, sao elas:
a) name, define 0 nome do cookie;
b) value,o valor da variavel passado no pararnetro name;
c) expirstion, determina um tempo que estara acessivel;
d) domain, armazena qual 0 dominio ou hostvalido;
e) path, determina para quais os diret6rios 0 cookie

e valido;

f) security, se 0 valor desta variavet for "1", 0 cookie sera transmitido pelo
Hypertext Transfer Protocol secure (HTTPS).

26

Se porventura alguns valores, de algumas variaveis nao forem preenchidas,


assumem valores padroes, no caso da expiration, 0 cookie encarrega-se de expirar
quando 0 usuario fechar 0 browser.

2.6.6 Seguranc;a

A sequranca
conectado

16gica em

uma

aplicacao

web

e lncispensavel,

mesmo

em uma rede mundial, os dados devem estar Integros garantindo

confidencialidade,

sua

conforme descreve Figueiredo (1999 p. 1):

Com 0 rapido crescimento da web e com a diversificayao de sua utilizayao,


a seguranya se tomou um ponto de lmportancla crucial, principalmente para
quem tem a web como um dos principais apslos comerciais.

Utilizando

rnetodos

de criptografia

de senhas, tratamentos

de dados de

torrnularios e veriticacoes de existencia de sessao, contribuem para que 0 aplicativo


se torne confiavel.

2.6.6.1 Message Digest Cinco (MD5)

rnetodo Message Digest (MD) utiliza um algoritmo

hash para criar uma

slntese de tamanho fixo, com base em um valor de tamanho maximo de duzentos e


cinqOenta e cinco caracteres. A fun9ao denominada

MD5, produz um valor de 120

bits de tamanho, contendo uma string allanurnerica. (FOROUZAN, 2004)


Este algoritmo

unidirecional, ou seja, nao

seja transformado novamente no texto de origem.

e posslvel

que 0 valor convertido

A fun9ao MD5 pode ser utilizada

para gravar 0 resultado da operacao com base em um valor de uma senha, ou seja,
coditica-la.

Deste modo a intorrnacao sera preservada, pois nao sera armazenado

seu valor oficial. Usuaries que possuem acesso ao banco de dados nao conseguem
visualizar a senha real. A sintaxe utilizada para a criptografia MD5 no PHP e muito
simples,

s6 e necessario

realizar a tuncao "md50", e informar a variavel a ser

27

calculada. Para certificar se a senha esta correta no momento do aces so


novamente a coditicacao e 0 resultado

e comparado

e feito

com 0 existente no banco de

dados.

2.6.6.2 lnjecao de SOL

A injecao de SOL

web, onde

acesso

um dos rnetodos utilizados para invasao em aplicativos

limitado por insercao de senhas. A maioria das aplicacoes

utiliza banco de dados, onde sao enviados sintaxes pelo script do servidor, a qual
recebe seus parametres da linguagem HTML.
Segundo Santos (2008 p.133):

Falhas de inje9ao acontecem quando os dados que 0 usuario da de entrada


sao enviados como parte de um comando ou consufta. Os atacantes
confundem 0 interprelador para 0 mesmo executar comandos manipulados
enviado dados modificados. As falhas de inje!(ao habilitam 0 atacante a
criar, ler, atualizar ou apagar arbitrariamente qualquer dado disponivel para
a aplicacao,

As variaveis enviadas pelo torrnulario do HTML ao servidor, para tratamento


em uma consulta ao banco de dados, representam um risco em rnanoulacao de um
comando, para que a resposta seja afinnativa de qualquer maneira, concedendo
acessos indevidos, visualizacao de intorrnacoes ou exclusao de dados.

o tratamento

em funcoes especificas no script PHP, para detectar conteudo

em dados recebidos pelo cliente soluciona grande parte dos problemas de injecao
de SOL.

importante a validacao de dados recebidos, antes que sejam enviados

para uma sintaxe do banco de dados.

2.7 BANCO DE DAD OS MYSOL

MySOL

um sistema gerenciador

de banco de dados (SGBD) relacional,

existindo uma versao com licenca comercial e outra de c6digo aberto com licenca

General

Public License (GPL).

Foi

desenvolvido

por

varios

anos,

pelos

28

programadores

Davi Axmark,

Allan

Larsson

e Michael

Widenius.

MySQl

foi

publicado em 1996, posteriormente adquirido pela Sun Microsystems, e em abril de


2009 pela Oracle, hoje ja possui 10 rrulhoes de instalacoes pelo mundo, incluindo
empresas

do setor privado, entidades

do governo e laborat6rios

de pesquisas

espaciais (STROPARO, 2010).


Este banco de dados tem como principal caracterlstica

sua velocidade. Um

banco de dados permite armazenar e consultar os dados armazenados.

service

MySQl controla 0 acesso a estes dados, permitindo que varies usuaries, consigam
incluir ou consultar
MySQl

grandes quantidades

e multiusuario

e multitarefa,

de intorrnacoes

utiliza linguagem

ao mesmo tempo.

pacrao

Structured

Query

Language (SQl).
Com a imensa facilidade de inteqracao do MySQl com varias linguagens, a
sua utilizagao para web em portais imensos com missao critica, ou simples sites com
poucos acessos tomam-se uma solucao viavel e muito contiavel.
Para Videiro (2008) 0 desempenho deste banco colabora na sua grande fama,
sendo considerado por grandes empresas 0 banco de dados mais popular existente.
Sua imensa compatibilidade
o

banco

de

caracterlsticas

dados

MySQl

e tacit integragao com a linguagem PHP, tornam

um

dos

mais

utilizados.

Dentre

as

principais

deste SGSD sao a sua portabilidade, suportando qualquer plataforma

atual, compatibilidade

com diversas

linguagens,

estabilidade

e desempenho

nas

transacoes de dados, exigindo muito pouco do hardware onde esta hospedado.

2.7.1 Tipos de tabela

o MySQl
transacionais

possui diversos tipos de tabelas, divididos em dois grupos, tabelas

e nao transacionais. A diterenca entre elas consiste que no primeiro

grupo as tabelas possuem maior confiabilidade e sequranca, ou seja, se 0 hardware


do servidor que hospeda 0 banco de dados falhar, provocando uma parada bruta,

posslvel recuperar as intorrnacoes atraves de um backup e 0 log de transicao. Com


uma tabela transacional

possivel combinar diversas

todas com um s6 comando (MUTO, 2006).

insfrucoes

e processa-las

29

As tabelas nao transacionais

sao muito mais rapidas, nao tendo nenhuma

sobrecarga de transacao, ocupam menos espaco em disco e usam menos mem6ria


para atualizacoes de dados.
Para Muto A. (2006 p.198):

Um banco de dados pode conter tabelas de diferentes tipos, ou seja, podese desenvolver uma aplicacao tranquilamente utilizando os varies tipos de
tabelas disponiveis, aproveitando dessa forma 0 melhor de dois mundos.

As OP90eSe vantagens garantidas pelo MySQL, conseguem atender diversas


exiqencias das apllcacoes, que podem precisar de desempenho extreme ou garantia
e confiabilidade.
obtida

e superior

Mesmo trabalhando

com tabelas

transacionais

a performance

a de qualquer outro banco de dados.

e 0 padrao

Muto (2006) descreve que as tabelas do tipo MyISAM,

utilizado,

tem seus indices em um arquivo com extensao '.MYI' (MYlndex), e os dados em um


arquivo '.MYD' (MYData). MylSAM suporta diversos itens como:

a) suporte a campos VARCHAR de tamanho fixe ou dinarnico;


b) campos VARCHAR e CHAR podem ser maiores que 64 Kbytes (KB);
c) valores NULL sao permitidos em colunas indexadas;
d) colunas BLOB e TEXT podem ser indexadas;
e) as tabelas MylSAM podem ser estaticas, dinarnicas e compactadas,
dois primeiros sao escolhidos automaticamente,

os

e 0 terceiro pode ser criado

com uma ferramenta.

HEAP sao tipos de tabelas que fazem parte do grupo das nao transacionas tal
como 0 MyISAM, mas seus indices sao armazenados

na mem6ria, isso as torn a

muito mais rapid as e vulneraveis, pois se 0 MySQL falhar os dados armazenados


nesse tipo de tabela serao perdidos.

tipo transacional

performance

InnoDB foi desenvolvido

para obter 0 maximo

ao processar um grande volume de dados,

de

usado largamente em

sites que possuem banco de dados superiores a um Terra byte (TB). As tabelas
podem ser de qualquer tamanho, mesmo em sistemas operacionais onde 0 tamanho
do arquivo

e limitado,

pois um espaco da tabela pode consistir em diversos arquivos.

Mesmo sendo transacional, e possuir um mecanisme de armazenamento

seguro, foi

30

desenvolvido para eficiencia em nivel de central processing unit (CPU). Possui sua
propria area de buffer para armazenar dados e indices na memoria principal (MUTO,
2006).
BerkeleyDB (BOB) e mais um tipo de tabelas existente no MySOL, possuem
diversos

recursos de um ambiente transacional.

Possuem uma maior chance de

sobrevivencia a falhas e sao capazes de realizar operacoes COMMIT e ROLLBACK.

2.7.2Integridade

Integridade

referencial

referencial

e um metodo utilizado

nos banco de dados para

garantir que os dados nao possam ser excluidos quando houver relacionamentos de
niveis hierarquicos nas tabelas, evitando assim que a intormacao seja corrompida.
Atraves das chaves estrangeiras e possivel identificar se a intorrnacao e dependente
de outra tabela.
Segundo Duarte (2006):

Existem determinados recursos do SGBD (Sistema Gerenciador de Banco


de Dados) que estao diretamente relacionados ao tipo de tabela escolhido,
tais como, controle de iransacao, niveis de lock e integridade referencial.

Para utilizar a integridade referencial no MySOL e necessario criar tabelas do


tipo InnoDB. Este tipo de tabela e possivel criar restricoes de integridades incluindo
a diretriva constraint na chave estrangeira de uma tabela.

MySOL permite incluir restrlcoes de integridade dos tipos cascade, restrict,

set null e set default. No primeiro caso, ao se remover

um registro da tabela

referenciada pela chave estrangeira, os registros relacionados com aquele removido


serao eliminados
em todas
tabelas relacionamentos
relacionadas.
restrict
nao tabelas.
permite nenhuma
rernocao
de registros
que as
possuam
em outras
Os dois
ultirnos atribuem

os valores default ou null para as chaves estrangeiras

registros relacionados foram excluidos (DUARTE, 2006).

cujos

31

2.7.3 Suporte a transacoes

As transacoes

simples

em qualquer

banco de dados sao interpretadas

imediatamente, ou seja, ap6s executado a sintaxe os dados sao inseridos, editados,


consultados ou excluidos. 0 suporte de transacoes sao delimitadores que indicam 0

e realizada

inicio e 0 fim de uma sintaxe, onde a execucao do comando no MySOL

e interpretado. (MADEIRA, 2004).


da diretiva SOL e start transaction. 0 conteudo

ou abortada somente quando 0 delimitador final

o comando

que indica 0 inicio

da sintaxe s6 e aplicado no banco de dados se for finalizado com 0 comando


commit, caso nao seja incluido
operacao

ficara

comportamento

pendente.

nenhuma

A sintaxe

instrucao

pode

de delimitador

ser cancelada

com

no final, a
algum

mau

do software, que utilizara meios de tratamento de erros incluindo 0

comando rollback como delimitador final, dessa forma todo 0 SOL da transacao nao
sera interpretado pelo banco de dados.

2.7.4 phpMy Admin

software

phpMyAdmin

foi desenvolvido

em linguagem

PHP com uma

interface web para navegador, com este aplicativo e possivel criar e remover banco
de dados, tabelas e campos, enfim, qualquer operacao necessaria para rnanipulacao
e conncuracao

do banco de dados MySOL. 0 software em si,

ficheiros em PHP, isso permite que seja multiplataforma,

um conjunto de

necessitando apenas de um

servidor web que seja compativel com a versao do PHP a qual 0 phpMyAdmin foi
construido.

Suas

atualizacoes

desenvolvimento

sao

criados

por

toda

comunidade de software livre mundial, garantindo que esteja disponivel em setenta


e duas linguagens (PHPMYADMIN DEVEL TEAM, 2003)
Atualmente

phpMyAdmin

e amplamente

utilizado em diversos servidores

pelo mundo, por ser de tacil inteqracao e compatibilidade,


que administradores

de banco

de dados

possam

concedendo acesso para

realizar

qualquer

operacao

remotamente em qualquer plataforma que possua um browser e conexao a internet.

32

2.8 AJAX

Ajax
JavaScript,

usa das

tecnologias

XML (eXtensible

atraves de processos assincronos

Markup

e sincronos.

Language)

objetivo do Ajax

evitar que a cada solicitacao enviada pelo cliente ao servidor, nao seja necessario
carregar toda a pagina (MORONI, 2007).
A metodologia

proposta

pelo Ajax, cria paginas

rapidas, pois 0 trafego de dados

web mais interativas

menor, visto que nao existe a necessidade

e
de

solicitar novamente uma pagina ao servidor e carreqa-la no browser.


De acordo com Majer (2010, p. 2):

Um dos grandes problemas do HTML (e seus derivados PHP, ASP,


ASP.NET,
etc.) em0 fato
de que
ao precisar
acessar
mtormacao
(muitas vezes
fun~o
de uma
tnteracao
com alguma
0 usuarlo),
numa
determinada pagina, esta lntorrnacao s6 pode ser recuperada atraves de
uma chamada outra paqina. Isto taz com que 0 processo seja lento e
tedioso.

A criacao de um objeto Ajax, tem como proposta solucionar uma grande parte
dos

problemas

atuais

das

linguagens

web,

permitindo

que

ele

acesse

as

intorrnacoes de outra paginas, ou de um banco de dados, sem sair da paqina onde


se encontra. Garantindo

nao s6 um desempenho

melhor durante a transicao das

lntormacoes, como uma melhor experiencia para 0 usuario.


Todas as requisicoes ao servidor sao feitas atraves do objeto criado em
JavaScript

com Ajax.

objeto faz a cornunicacao

servidor, no modo ctassico a solicitacao


HTML.

a esquema

entre a interface HTML e 0

e a resposta sao enviadas direto pelo

abaixo visualiza as duas arquiteturas comparando as camadas

onde os dados transitam.

33

user

oweor

J.v.~Pt

o'lt

'"

lnterilO!

call

HTML~diO
Aju engine

;n;'j(s~ 1
I

XMld~tI

web and/or XML. _

datastores, backend
~ng,
~
systems

=terns

se ve

classic

e rio

ems

Ajax
web application model

web application model

Esquema 1: Comparative entre a arquitetura classica e a AJAX


Fonte: Paiva (2005 p. 4)

As requisicces
sincronas,

HTTP da metodologia

em uma sequencia assincrona,

Ajax, podem

ser assincronas

nao existe a necessidade da resposta

imediata do servidor para que possa continuar uma determinada


preenchimento

de outro formulario,

acao, como

ou a paqina acabar de carregar. 0 usuario

podera continuar interagindo com a pagina, e quando as inforrnacoes de uma acao


chegar, um metodo ira tratar estas intormacoes, imprimir algo na pagina se houver a
necessidade. No modo sfncrono, a aplicacao s6 tornara outra acao quando obtiver a
resposta da anterior, deste modo as respostas e requisicoes se tornam sequenciais
(PAIVA, 2005).

2.8.1 XML

XML significa linguagem de rnarcacao extensivel,

Wide Web Consortium


necessidade

(W3C), tendo como principal

foi criada pela World

objetivo

da concepcao

de criar um padrao que poderia ser lido por diversos linguagens,

e dividida

inclusive HTML. Sua estrutura

entre tags de modo hierarqutco, por ser

baseado em arquivo de texto, permite consultas e grava~ao em diversos banco de


dados, independente de qualquer plataforma (World Wide Web Consortium, 2006).

arquivo

computadores

XML

possui

um alto

nivel

de

legibilidade,

permitindo

que

e humanos interpretem seu conteudo facilmente, pode ser validado

utilizando arquivos de definicao de tipo de documento. 0 XML armazena somente 0


conteudo,

intormacces

sobre estilos e torrnatacces

sao utilizados

em arquivos

separados, podendo ser HTML ou CSS.

2.8.2 JavaScript

A linguagem de proqrarnacao JavaScript foi criada em 1995 por Brendan Eich,


enquanto era funcionario da Netscape. No corneco charnava-se LiveScript, atraves
de um acordo entre a Netscape

e a Sun, a linguagem

passou a se chamar

JavaScript (AURELIO, 2004).

interpretada por navegadores, sendo utilizada amplamente para validacao

de tormulanos, anirnacoes e dernais interacoes,

possfvel criar funcoes dentro de

uma estrutura HTML, possui urn desempenho de resposta muito rapido, devido que
o JavaScript

carregado

juntamente

com 0 HTML, nao dependendo

de uma

resposta do servidor para uma determinada entrada de dados.


Conforme

Triacca

(2007),

problemas de compatibilidade
outra linguagern compativel,
browser

no comeco

linguagem

possula

diversos

entre navegadores. A Microsoft foi obrigada a criar


pois a Netscape nao licenciou 0 JavaScript

Internet Explorer. Com duas linguagens

para 0

diferentes, desenvolvedores

de

paginas web tiveram que criar scripts diferentes para cada navegador, necessitando
em uma deteccao de browserna

hora de executar a pagina no cliente.

2.8.3 Modelo de Objet os de Documentos (DOM)

o Modelo

de Objetos de Documentos (DOM)

e uma especiticacao

da W3C de

forma totalmente neutra, sem nenhuma especificacao de linguagem ou plataforma,


criada juntamente
hierarquica onde

com 0 HTML quatro.

e possivel

Esse conceito

alterar dinamicamente

mostra

uma estrutura

estilo eo conteudo de um site

ou uma pagina, atraves de uma entrada de dados pelo usuario ou de forma


automatlca (FLANAGAN, 2002).
onde

A principal funcao do DOM em um browser

ea

uma linguagem

em HTML, XML ou qualquer

linguagem

possa exibir documentos

de marcacao.

Quando

documento

representacao de rnetodos,

estiver

carregado,

possivel

manioula-los atraves de uma estrutura de arvore.

2.8.4 Requislcao

Conforme

XMLHttp

Moroni (2007), 0 XMLHttpRequest

um objeto na linguagem

JavaScript, utilizado para criar uma conexao entre a paqina e 0 servidor da aplicacao

web. Com esse objeto, e possivel detectar

browser do cliente, antes de qualquer

operacao do Ajax.
A deteccao

necessaria devido que alguns navegadores

utilizam 0 objeto

JavaScript nativamente, como Mozilla, Opera e Safari, ja 0 Intemet Explorer atraves

do objeto Active X.

necessaria a construcao de funcoes para tratamento antes da

criacao do objeto, ja que a W3C nao especifica 0 padrao para a utilizacao do


XMLHttpRequest,

sendo assim, cada navegador

pode implementar

de diversas

maneiras diferentes.
Utilizando metodos especificados no DOM,
entre a paqina e 0 script do servidor.

e possivel

enviar e receber dados

2.9 SERVIDOR WEB

Servidor web

e 0 software

instalado em um computador conectado a intemet

ou em uma intranet, este computador


pessoais. 0 software

e responsavel

possui hardware superior aos computadores

em aceitar pedidos atraves do protocolo HTTP,

ele gerencia e armazena conteudos de sites ou aplicativos web. Um servidor web


po de armazenar

somente um site, ou milhares deles, 0 conteudo de um site e

acessado atraves dos dominios que estao associados ao Internet Protocol (IP) do
servidor (STEVENS; FENNER; RUDOFF, 2004).
Os pedidos para visualizacao e download dos c6digos HTML, imagens, sons
ou qualquer outro sao feitos atraves dos navegadores instalados nas plataformas
dos clientes. Com a utiliza\;:ao de linguagens especificas para serem processadas e
executadas nos servidores,

possivel uma interacao com os clientes, como envio

de torrnulario, gravayao e leitura de banco de dados.


Estes tipos de servidores
disponibilidade

devem estar ligados dia e noite para garantir

do conteudo armazenado, au seja, que em qualquer momenta possa

atender

as solicitacoes

garantir

milhares

dos usuaries. Alguns

de acessos

sirnultaneos

servidores

que podem

sao configurados

para

ocorrer em um site ou

aplicativo de grande porte, utilizando tecnicas de redundancia de link da internet,


energia eletrica, entre outras que visam a integrabilidade destes servidores.

2.9.1 Servidor Apache

o software

Apache

e um

servidor web livre, e a sua utilizacao esta presente

em mais de 50% de todos os servidores do mundo. Foi criado em 1995, por Rob Mc
Cool, tuncionario da National Center for Super Computing Applications (NCSA). Com
saida de Rob da NCSA, varias pessoas cornecaram a adaptar 0 software as suas
necessidades.
continuacao

Brian

Behlendorf

e Cliff Skolnick

foram

os

responsaveis

pela

do projeto, criaram a Fundacao Apache com mais oito pessoas. A

turdacao passou a controlar e disponibilizar


(ALECRIM, 2006).

patches

com adicao de recursos

A origem do nome Apache

e baseado

em uma tribo de indios americanos que

detinham de grandes estrateqias e resistencias em combate.

servidor

compatlvel

com 0 protocolo

HTTP, existindo versoes

para

diversas plataformas. Composto por rnodulos que realizam as mais variadas funcoes
e recursos, como compatibilidade

com PHP, Python, modulo de criptografia atraves

de camada SSL entre outros. Conforme Coar e Bowen (2008, XI):

pacote baslco distribuido


pela Apache Software
Foundation
razoavelmente abrangente e bastante poderoso, e foi feito um grande
estorco por parte dos programadores para evitar que 0 software sofresse do
problema de ter muitos recursos que ninquern usa. Um aspecto do pacote 0
torna especialmente interessante: ele inclui estensibilidade par padrao,

A estensibilidade por padrao, garante uma grande compatibilidade com novos


rnodulos, permitindo ao servidor Apache tornar-se rnais competitivo com relacao a
diversos recursos implementados
software
garantindo

livre,

continua

sendo

por programadores de todo 0 mundo. Por ser um


melhorado

por

diversas

sua inovacao em manter novas versces

pessoas

votuntarias,

com desempenho

para os

servidores.

o Apache e capaz

de executar codiqos em divers as linguagens como PHP,

Perl, Shell Script e Active Server Pages (ASP). Pode ser configurado como servidor
HTIP

ou FTP. Sua compatibilidade

com 0 banco de dados MySOL, garante a

utillzacao do conjunto PHP e MySOL, utilizado por milhares de sites e aplicacoes.

2.9.2 XAMPP

A fundacao

Apache

Friends

um projeto sem fins lucrativos

que visa

promover 0 servidor Apache, fundada em 2002 por Kai 'Oswald' Seidler e Kay
Vogelgesang.

Sua principal contribuicao

a cnacao do XAMPP, um conjunto de

softwares para servidor web, incluindo MySOL, Apache, PHP, FileZilla entre outros.
Seu nome

e um acr6nimo

que significa os principais softwares embutidos, a letra "x"

significa 0 sistema operacional,

e multiplataforma,

a letra "a" de Apache, "rn" de

MySOL, e duas vezes a letra "p", que significam PHP e PERL (APACHE FRIENDS,
2009).

A principal
configura9ao,

caracteristica

por esse principio

testes de sites e aplicativos,

do software,

sua facilidade

de instalacao

muito utilizada em computadores

sem a necessidade

locais para

de upload em um servidor na

internet.

2.9.3 Microsoft

Internet Information

Services (115)

Microsoft liS (Internet Information Services) e um servidor de internet ou

Intranet, utilizado essencialmente


segundo

nos sistemas operacionais

Windows,

servidor web mais utilizado no mundo. A primeira

disponibilizada
operacional,

versao do ISS foi

em 1996. Em sua versao atual, esta mais integrado


garantindo

estabilidade

e sequranca

sendo 0

(RODRIGUES

ao sistema

DE FREITAS,

2006).

utilizada a tecnologia proprietaria ASP para ser interpretada no liS, esta

linguagem

igualmente ao PHP

capaz de gerar paginas HTML dinamicamente.

Atraves da inclusao de m6dulos de terceiros


para executar outras linguagens.

posslvel adicionar funcionalidades

Suporta quase todos os principais

protocolos

existentes, incluindo HTTP, FTP e SMTP.


As primeiras versoes deste servidor careciam
incorporou

diversas

caracterlsticas

adicionais

servidor web, diminuindo consideravelmente

de sequranca.

nas versoes

A Microsoft

mais novas de seu

as vulnerabilidades.

Ainda

e posslvel

adicionar ferramentas de sequranca de terceiros, criando uma camada adicional de


protecao.

2.10 ADOBE DREAMWEAVER

Segundo
desenvolvimentos

Remoaldo

(2008), 0 Adobe

Dreamweaver

um software

para

de sites e aplicativos para web, possui um editor HTML e suporte

para tecnologias PHP, Ajax, ASP, JSP entre outras.

com

Conta
reconhecendo

uma

interface

que

padroes de comandos.

auxilia

desenvolvimento

No seu metoda de design

de

c6digo,

possivel criar

campos e botoes de uma maneira simples e intuitiva. Com a opcao preview, e


possivel executar 0 c6digo digitado chamando 0 navegador padrao ou outro, para ler
o arquivo salvo, este botao se torn a acessivel e pratico para que se possa verificar a
compatibilidade.

2.10.1 Desenvolvimento de Formularios

Dreamweaver

permitindo
automatica

possui

um menu exclusivo

para crlacao de torrnularios,

a inciusao de campos, checkbox, botoes e menus variados. A criacao


de torrmnarios

facilita

permitindo que 0 desenvolvedor

desenvolvimento

do layout da aplicacao,

da aplicacao concentre seus maiores estorcos no

c6digo da linguagem do servidor.


Gerar formularies automaticamente
com diversos navegadores,

garante uma compatibilidade

visto que 0 Dreamweaver

do c6digo

utiliza os padroes definidos

pela W3C.

2.10.2 Spry

Spry e um framework integrado ao Adobe Dreamweaver, a partir da versao


CS3. Sao bibliotecas

no formato

JavaScript

e CSS, permitindo

a criacao

de

conteudo dinarnico e rico visual mente, criando elementos interativas, cornunicacao e


leitura de arquivos XML. Utilizando

a tecnologia

Ajax e possivel

criar diversas

validacoes para campos de Iorrnulario, menus custornizaveis, paineis entre outros. 0


gerenciamento

e realizado

total mente

otimizamdo 0 desenvolvimento.

no Dreamweaver,

na aba

0 arquivo gerado em JavaScript

propriedades,

e responsavel

por

qualquer acao, comportamento e interatividade, eo CSS se encarrega dos estilos de


cor, fontes e tamanhos (VIEIRA, 2007).

A vahdacao dos campos

realizada

total mente por

c6digo

JavaScript,

permitindo uma reposta rapida, antes mesmo de 0 torrnulario ser enviado, pois as
instrucoes sao baixadas na plataforma do usuario, ou seja, 0 processamento
validacao

feito localmente,

assim nao existe a necessidade

de

de esperar uma

resposta do servidor.

Spry pode ser utilizado com qualquer tecnologia

de script para servidor,

pois ele esta no front-end de uma aplicacao integrado ao HTML.

2.11 METODOLOGIA

o projeto

do aplicativo utiliza-se da fundarnentacao

seus funcionamentos
PHP, onde cada um

te6rica para definiyao de

e requisitos tecnicos. 0 c6digo fonte

e responsavel

dividido em arquivos

por um m6dulo.

2.11.1 Analise de Requisitos

A definigao das caracteristicas

do aplicativo deve ser analisada conforme a

estrutura da empresa. Satisfazendo as necessidades dos usuarios, automatizando


as atividades.

Para determinar

como 0 software

deve acatar os processos,

realizado a analise de requisitos da aplicacao. Seguem em t6picos os requisitos do


aplicativo em questao:

0 aplicativo deve permitir a inclusao de pedidos com intorrnacoes de clientes


e produtos pre-cadastrados;

A soma

de totais

de impostos

e produtos

em um pedido devera

ser

autornatica;

Devera haver uma validacao de CPF e CNPJ no cadastro de clientes;

Cadastro de usuario em quatro departamentos:

representante, faturamento,

producao, administrador;

Ernissao de relat6rios de vendas em PDF;

Criacao de ordens de carregamento com a selecao de um ou varies pedidos;

0 aplicativo devera ser acessivel de qualquer local com internet.

2.11.2 Caso de uso e diagrama de sequencia

Utilizando um diagrama de caso de usa, e possivel visualizar as fungoes


exercidas

por cada ator. Os atores

departamento,

sao representados

on de cada departamento

por usuaries de cada

realiza diversas

atividades

previstas

algumas vezes exclusivas. 0 esquema demonstra as operacoes pad roes realizadas,


instruindo no desenvolvimento do aplicativo, a fim de atender as especiflcacoes.
Esta representacao

visual ajuda 0 entendimento

usuario possui em relacao ao software, compreendendo

das possibilidades

que 0

de um modo geral, as suas

acoes, comportamento e interacoes.

diagrama de sequencia, conforme presente no Apencice A, descreve os

passos necessaries para a utilizacao das fungoes presentes no aplicativo. Diversas


inforrnacoes devem ser cadastradas anteriormente,
m6dulos.

liberando a utllizacao de outros

uc

Ului';O'rO~

Esquema 2: Caso de uso


Fonte:

autor

2.11.3 Diagrama de classes

o diagrama

de classes permi1e visualizar as dependencias entre os diversos

modules e objetos, possibilitando um conhecimento antecipado das interacoes sobre


as variaveis e fungoes basicas tratadas no aplicativo. Fowler (2005) descreve as
caracteristicas que 0 diagrama deve representar:

Um diagrama de classes descreve 0 tipo de objetos presentes no sistema e


os vanos tipos de relacionamento estancos existentes entre eles. Os
diagramas de classes tambem mostram as propriedades e as operacces de
uma classe, e as restri90es que se aplicam
maneira como os objetos
estao conectados.

Diagramas
cornpreensao.
propostos

de classes

devem

ser claros e objetivos,

0 Anexo B contern 0 diagrama

pelo aplicativo,

relacionamentos

facilitando

a sua

de classes dos principais

objetos

seus atributos e operacoes.

Sao diversos tipos de

utilizados para determinar as relacoes entre os objetos, que podem

ser multiplas ou unicas.

2.11.4 Arquitetura geral

o aplicativo

deve ser executado simultaneamente

web. Atraves do browser,


processado,

navegador

entre 0 cliente e 0 servidor

solicitado todo c6digo HTML e JavaScript

se comunica

diversos valores. 0 c6digo PHP

com 0 servidor, enviando

e interpretado,

para ser

e recebendo

realizando operacoes de insercoes

ou consultas no banco de dados. 0 esquema abaixo demonstra as relacoes entre as


arqu itetu ras:

lente
Browser

[,-

~_IT_M_L_-----,)144

--t"(

JavaScript

Servidor
PHP

MySQL

Sessao -

Conexiio
Banco de Dados

converseo

Esquema 3: Arquitetura Geral


Fonte:

autor

2.11.5 Arquivo de conflquracao

o arquivo

"config.php" possui

para 0 funcionamento

OS

valores essenclas que devem ser preenchidos

global do apllcacao. Este reposit6rio deve ser configurado

durante 0 processo de instalacao. Seu conteudo deve ser protegido pelo servidor

web, evitando acessos indevidos.

formado

inteiramente

por variaveis declaradas

que sao utilizadas

por

diversas paginas, para realizar tuncoes de conexao ao banco de dados, envio de emails e parametros de ernissao de relat6rios.

<?php
$Iocal_database = "Iocalhosf';
$database = "projeto";
$usuario_database = "root";
$senha_database = "";
$e_mailremetente = "contato@machsolucoes.com";
$e_maildestinatario = "contato@machsolucoes.com";

I/Configura<;ao de retatonos
$fonte = 'Arial';
$tamanho
'10'; 7>

2.11.6 Conexao com 0 banco de dados

Oualquer paqina PHP que utilize uma sintaxe de SOL para fazer qualquer
operacao com 0 MySOL, deve possuir as fungoes nativas da linguagem para criar a
conexao com 0 banco de dados. 0 c6digo descrito possui a tuncao para conexao
com 0 MySOL e outra para selecionar a base de dados.

incluido tratamento em

caso de erro atraves do trye catch, que realiza a tentativa de conexao, e em caso de
falha exibe a mensagem de erro.

<?php
include ("config.php");
try{
if(!$db = mysql_connect("$local_database","$usuario_database","$senha_database")){
throw new Exception("Erro ao estabelecer conexaol ".mysql_errnoO." - ".mysql_error());
}else{

try{
if(!mysql_select_db("$database",$db)){
throw new Exception("Erro ao
".mysql_errorO);
}
}catch(Exception $e){
echo $e->getMessage();

selecionar

banco

de dados!

".mysql_ermo()."

}
}catch(Exception $e){
echo $e->getMessageO;
?>

As

variaveis

$Iocal_database,

$usuario_database,

$senha_database

$database, possuem a localizacao do banco de dados atraves de Internet Protocol


(IP) ou endereco HTTP, login, senha e nome da base respectivamente.

2.11.7 Autenticac;ao

de usuario

Para acessar 0 aplicativo, 0 usuario devera ser autenticado digitando login,


senha e escolhendo 0 departamento

que pertence. Os departamentos

sistema sao divididos em representante,

faturamento,

padrces do

producao e administrador.

usuario s6 podera acessar 0 conteudo determinado para a sua reparticao, contendo


as suas fungoes utilizadas. 0 c6digo HTML presente
formulario

com

os campos

que devem

no apendice C, contem 0

ser preenchidos

pelo usuario

na sua

autenticacao.
Apes a validacao,

os dados de login e departamento

sao incluidos

em

variaveis de sessao, ficando disponiveis para uso em rotinas de tnclusao de pedidos


e geragao de relatorios. 0 codigo para verificacao de autenticidade
conforme detalhado abaixo:

<?
$Iogin = $_POST['login1;
$senha = $_POST[,senha1;
$departamento = $_POST[,dpto1;
include "conexao.php";
$sql = mysql_query("SELECT'
FROM usuario WHERE login = '$Iogin''');
$cont = mysql_num_rows($sql);
while($linha = mysql_fetch_array($sql{
$senha_db = $linha['senha1;
$departamento_db = $Iinhardepartamento');
}
if($cont == O){
echo"
<META HTTP-EQUIV=REFRESH
CONTENT ='0; URL= ..llogin.php'>
<script type=\"texVjavascript\">
alert(\"O nome de usuario nao corresponde.\");
</scrip!>";
}else{
if($senha_db != md5($senha{lIconfere
senha
echo"
<META HTTpEQUIV=REFRESH
CONTENT ='0; URL= ..llogin.php'>
<script type-V'textjavascriptv'
alert(\" A senha nao corresponde.\");
-c/script ";
}else{
if($departamento_db != $departamento){lIdepartamento
echo"
<META HTTP-EQUIV=REFRESH
CONTENT ='0; URL= ..llogin.php'>
<script type=\"texVjavascript\">
alert(\"Departamento incorreto.\");

e feito

em PHP

e/scrlpts";
}
else{

sesstonstartr):

$_SESSION[,login_usuario')
= $Iogin;
$_SESSION[,senha_usuario1
= $senha;
$_SESSION['departamento_usuario']
= $departamento;
header('Location: ..Iindex.php');
}
}mysql_close($db)

;?>

A tuncao include importa dados para a conexao realizada entre a linguagem e


o MySQL.Toma-se

essencial a utnzacao de variaveis referente a conexao, em toda

paqlna que existe a necessidades

de transicao

de informacao com 0 banco de

dados. 0 c6digo de validacao de usuario possui uma sintaxe de consulta,

para

verificar a autenticidade das intormacoes inseridas.

utilizada a fun9ao md50 para converter 0 valor da senha digitada pelo

usuario,
convertido

utilizando

um algoritmo

e possivel

hash nativo da linguagem

PHP. Com 0 valor

a cornparacao com a intormacao presente no banco de dados,

que ja fora convertido no ate de cadastramento do usuario com sua senha.


Atraves de alertas em JavaScript,

usuario

informado caso os dados

inseridos estejam incorretos. Se a intorrnacao estiver correta, as variaveis de sessao


sao criadas, e 0 usuario

redirecionado

para a paqina contendo 0 menu com as

OP90es especificas para seu departamento.

2.11.8 Cadastros

o cadastre
utilizacao

de intorrnacoes sobre mercadorias e clientes

de todas

departamento

as funcionalidades

de

de faturamento e adrninistracao

rotinas

previstas

e essencial

para a

no aplicativo.

responsavel sobre 0 cadastro de

produtos, bem como seus dados tecnicos, como por exemplo, 0 campo peso que
utilizado para emissao de uma ordem de carregamento

e impostos freqOentemente

devem influenciar 0 valor total de um pedido. Somente ap6s 0 cadastro, 0 produto


sera liberado para ser utilizado com um item de venda ou para cornposicao de um
resultado de relat6rio.

representante cadastrara

OS

dados do cliente no ate de sua primeira

compra. Para evitar a inclusao de Cadastro Nacional de Pessoa Juridica (CNPJ) e


Cadastro de Pessoa Fisica (CPF) incorretos, e utilizado uma funcao em JavaScript
capaz de verificar a autenticidade do c6digo, realizando diversas operacoes e
comparando

resultado com os ultirnos algarismos inseridos. Caso a intorrnacao

cadastrada nao seja valida,

usuario sera alertado antes de continuar preenchendo

os demais campos. A tela para cadastro de cliente exige a insercao de todos os


parametres necessaries para a ernissao de pedido e ernissao de nota fiscal por
software de terceiro.
Ap6s os dados serem digitados no formulario da paqina, sao enviados ao
servidor atraves do rnetodo POST, onde um arquivo PHP sera

responsavel de

receber as variaveis e fazer 0 tratamento da conversao do paorao de datas e


nurneros decimais, conforme 0 modele requisitado do banco de dados. Com as
lntorrnacoes armazenadas em objetos locais e realizado a insercao no MySQL.
Atraves do apendice D, e possivel visualizar 0 c6digo utilizado para os cadastros.

2.11.9 lnclusao

de pedidos

Na inclusao de pedidos 0 usuario ira selecionar um cliente cadastrado atraves


de uma busca por sua razao social. Com 0 cliente selecionada e habilitado a opcao
de busca e escolha de produtos, onde devem ser informados a quantidade e 0
As intormacoes referentes

preco,

a cliente e totais do pedido serao armazenadas

em variaveis de session juntamente com um array de sessao para os itens. Ap6s


clicar em confirmar pedido, os dados da sessao serao armazenados no banco de
dados e as variaveis sao limpas.

c6digo do apendice E, recebe todas as variaveis de pedido e itens,

realizando

tratamento e incluindo na sessao durante

enviado por parametro a tuncao "confirmar" que


dados.

processo. No final

responsavel em armazenar os

2.11.10 lnclusao e baixa de ordens de carregamento

Com um ou mais pedidos cadastrados


carregamentos

internas. 0 departamento

posslvel a inclusao de ordens de

de faturamento

podera compor a ordem

informando a transportadora, nome do motorista e previsao de carregamento.


A ordem sera visualizada pela plataforma de carregamento, que contara com
os resultados das quantidades

e 0 peso para do montante da mercadoria.

Na

finallzacao da carga devera ser feita sua baixa, registrando no banco de dados que
os pedidos ja foram carregados.

c6digo fonte presente do apendice F,

e divido

em duas fungoes, uma que

deve compor a ordem e outra responsavet pela baixa:

2.11.11 Relat6rios

enorme a quanti dade de opcoes de relat6rios pre-definldos

desenvolvimento,

possiveis no

intorrnacoes de diversas tabelas sao juntadas e confrontadas.

Os

usuaries somente deverao informar as variavels de uma consulta como data, cliente
ou produto.
Os relat6rios sao gerados em Portable Document Format (PDF). 0 sistema
utiliza a biblioteca FPDF para converter os resultados do banco de dados em um
arquivo PDF,

e posslvel

a conflquracao de fontes, tamanho, colunas e ate lnclusao

de imagens. 0 c6digo abaixo gera um relat6rio com 0 cadastro de todos os clientes


inclusos no aplicativo.

<?php
Include
define('FPDF _FONTPATH', 'fpdf/font!');
require('fpdf/fpdf.php') ;
include("conexao.php") ;
$busca = mysql_query("SELECT id_cliente, nome, endereco, uf FROM cliente");
$pdf = new FPDF();
$pdf->OpenO;
$pdf->AddPageO;
$pdf->SetFont('Arial', 'B', 10);
$pdf->CeU(40, 5, 'CNPJ / CPF');
$pdf->SetX(35);

$pdf->Cell{135, 5, 'Nome');
$pdf->SetX(90);
$pdf->Cell{135, 5, 'Endereco');
$pdf->SetX(150);
$pdf->Cell{40, 5, 'UF');
while ($resultado = mysql_fetch_array{$busca))
$pdf->lnO;
$pdf->Cell{40, 5, $resultado[,id_cliente1);
$pdf->SetX(35);
$pdf->Cell(135, 5, $resultado[,nome1);
$pdf->SetX(90);
$pdf->Cell(135, 5, $resultado['endereco']);
$pdf->SetX(150);
$pdf->Cell{40, 5, $resultado['uf1);
}
$pdf->OutputO; ?>

2.11.12 Logoff

Para garantir a seguranc;a na utilizacao do aplicativo

necessario dispor de

mecanismos para realizar 0 logoff do usuario, destruindo as intormacoes de sessao


pertinentes.

Em toda paqina se encontra a opcao de logout ao lade do menu,

quando clicado nesta opcao 0 usuario sera redirecionado na pagina inicial, para uma
nova autenticacao.

c6digo utilizado abaixo recebe 0 pararnetro "sair", destruindo as variaveis

de sessao login e senha.

E utilizada

uma tuncao para imprimir 0 nome do usuario ao

lade da opcao de logout.

<?php
include "conexao.php";
$sair = $_GET['sair');

sessionstartr):
if (isset{$_SESSION['ultima_acao'])

&& (timeO - $_SESSION['unima_acao1

> 300)) {

sessionjfestroyf):
session_unsetO;

}
$_SESSION[,uttima_acao1

= timeO;

$sql_nome = mysql_query("SELECT nome FROM usuario WHERE login = '$Iogin_usuario'");


while{$linha = mysql_fetch_array($sql_nome)){
$nome_dousuario = $linha['nome1;
}
if ($_ GET['sair')== "sair")
{ unset{$_SESSION["login_usuario"));
unset($_SESSION["senha_usuario1);
header("Location: ..llogin.php");

A tuncao "time()" recupera a hora atual, comparando-a

com 0 horario da

ultima acao do usuario no sistema, se for menor que trezentos segundos, ou cinco
minutos, as sessces sao destruidas,

exigindo um novo login. Esta estrutura de

tempo limite sem acao permite uma garantia para quando 0 usuario esquecer 0
sistema

autenticado

nao possa ser utilizado

por outra pessoa

nao autorizada,

enquanto sua ausencia no computador.

2.11.13 Tratamento e conversao de dados

Algumas

mtorrnacoes digitadas

pelos usuaries

necessitam

ser tratadas,

convertendo alguns detalhes em sua orlentacao e orqanfzacao. Dados como c6digos


cadastrais,

datas e nurneros decimais precisam ser convertidos

apresentando ao usuario com 0 que

e gravado

entre 0 padrao

no banco de dados.

Durante varies anos, a comunidade de c6digo aberto criou varies scripts em


diversas
algoritmo

linguagens
abaixo

para a conversao

entre dados com pad roes diferentes.

capaz de detectar 0 padrao de data contido na variavel, e

converter 0 dado para gravar no banco de dados MySQL ou apresentar na tela para
o usuario. 0 c6digo foi escrito em linguagem PHP e criado por Marcelo Bento da
Rocha (2010 p. 1)

,.

<? p

h p
@param $data
@return $data
., Marcelo Bento da Rocha
function converterData($data)
{
if(substr($data,2, 1) == "f')
{
$dd = substr($data, 0,2);
$mm = substr($data, 3,2);
$aa = substr($data, 6,4);
$time = substr($data, 11,8);
if($time != "")
$data = $aa."-".$mm."-".$dd."
else
$data = $aa."-".$mm."-".$dd;

".$time;

else
{
$dd substr($data, 8,2);
$mm = substr($data, 5,2);
$aa = substr($data, 0,4);
$time = substr($data, 11,8);
if($time != "")
$data =$dd."I".$mm."/".$aa."
else
$data = $dd."/".$mm."/".$aa;
}
if($data=='ff)
{
$data = ";
}
return $data;

".$time;

Os val ores decimais conforme 0 padrao portugues brasileiro

e utilizado

virgula

entre os algarismos de unidades e decirnas, mas 0 padrao exigido por muito banco
de dados, como

e 0 caso do MySQL, e 0 americana

on de

e utilizado

da virgula. 0 PHP possui uma funcao nativa chamada "str repiece",

ponto no lugar
ela

e capaz

de

percorrer todo 0 conteudo da variavel, buscando 0 algarismo a ser alterado. Para


isso

e necessario

informar 0 valor a ser procurado, e para qual deve ser convertido.

A Iuncao pode ser demonstrada abaixo, com 0 valor de uma variavel digitada pelo
usuario que deve ser convertida antes da qravacao no banco de dados.

<?php
$ipi = strjeplacet",",

".", $ipi);

t-:

valor da chave primaria

no cadastro

de clientes

0 CNPJ

ou CPF,

con forme padronizado, este c6digo possui pontos e barras que dividem parte dos
algarismos. Para isso
intorrnacao,
legivel

e utilizado

completando

para conterencia.

uma mascara no campo em que 0 usuario digita a

automaticamente

possivel

validar

as divis6es

necessarias,

os nurneros digitados

tomando-o
comparando

resultados dos algarismos com 0 c6digo verificador, se 0 valor informado nao estiver
correto

e executada

uma caixa de dialogo informando 0 erro.

Para essas funcoes

utilizada

um script livre e aberto em linguagem

JavaScript, presente no anexo A, 0 c6digo foi escrito por Leandro Alexandre (2009 p.

2).

2.11.14 Contlrmacoes

e avisos em JavaScript

A linguagem JavaScript permite criar caixas de dialoqos geradas no meio da


tela, requisitando
apresentados.

que 0 usuario leia a mensagem

interagindo

com os botoes

A fun gao "elertt)" recebe uma mensagem que sera exibida na tela

requisitando a contirmacao do usuario para que ela seja fechada. 0 c6digo abaixo

utilizado ap6s a insercao de um pedido no aplicativo, ele deve informar 0 nurnero do


pedido gerado.

<script LANGUAGE=\"Javascript\,'>
alert(\"Pedido cadastrado - Numero: $numero_pedido\");
-e/scrlpt

A tuncao "etert" no caso citado acima fica encapsulada dentro do c6digo PHP
para que seja posslvel preencher

a variavel "$numero_pedido"

com 0 c6digo do

ultimo pedido cadastrado.

utilizada uma caixa de dialoqo que requisita uma contirrnacao do usuario

antes de realizar uma determinada acao. A funcao "confirm()" gera uma mensagem
com dois botoes: um "OK" e outro "CANCELAR". Oependendo da escolha do usuario
o script retorna "true" ou "telse', estes valores sao utilizados para confirmar uma
execucao

do c6digo

PHP ou cancela-la.

script abaixo

e utilizado

confirrnacao na exclusao de qualquer registro nos m6dulos de cadastros.

function show_confirm(pagina,funcao,id,retorno)
(
var id
var retorno
var r=oonfirm("Aperte OK para deletar");
if (r==true)
{
window. location =pagina +" ?funcao=" -funcao- "& id=" +id+" &retorno= "Hetorno;
}
else
{
window.locationeretomo:
}
}

para a

A tuncao "show_confirm(")
de onde

foi chamada,

recebe diversas variavets que armazenam 0 local

permitindo

que ela seja

utilizada

por varias

paginas,

retornando para seu local correto ap6s a interacao com 0 usuario.

2.11.15 Envio automatlco de e-mails

Com a inclusao de um pedido no sistema e possfvel enviar intorrnacoes como


nurnero do pedido e razao social do cliente para outro arquivo PHP, que sera
responsavet por enviar um aviso para 0 e-mail do departamento

de faturamento.

Segue abaixo um exemplo de c6digo utilizado, a qual detecta 0 sistema operacional


utilizado no servidor para determinar contiquracoes de cabecalho, antes do envio do
e-mail.

<?php
include "..leonfig.php";
$emailsender = "$e_mailremetente";

/* Verifica qual

0 sistema operacional do servidor para ajustar 0 cabecalho de forma correta . /


if(PATH_SEPARATOR == ";") $qu5lbra_linha = "\r\n"; liSe for Windows
else $quebra_linha = "\n"; liSe "nAo for Windows"

II Passando os dados obtidos pelo tormulario para as variaveis abaixo


$nomeremetente
= "Sistema gereneiador de vendas de Bebidas";
$emailremetente
= "$e_mailremetente";
$emaildestinatario = "$e_maildestinatario";
$eomcopia
":
$assunto
= "Novo pedido adicionado";
$n_pedido
= $numero_pedido= $_POSTrn_pedido');

$mensagemHTML
'<P></P>
<P>Um novo pedido foi adicionado numero<lP>
<p><b><i>' .$n_pedido. '</i></b></p>

chre-';
$headers
$headers
$headers
$headers
$headers
$headers

= "MIMEVersion: 1.1" .$quebra_linha;


.= "Content-type: text/html; charset-iso-sass-t" .$quebra_linha;
.= "From:" . $emailsender.$quebra_linha;
.= "Ce: " . $comeopia . $quebra_linha;
.= "Bee: " . $eomeopiaoeulta . $quebra_linha;
.= "Reply-To:" . $emailremetente . $quebra_linha;

if(!mail($emaildestinatario,
$assunto, $mensagemHTML, $headers ,"-r".$emailsender)){
$headers.= "Return-Path:" . $emailsender . $quebra_linha;
mail($emaildestinatario, $assunto, $mensagemHTML, $headers);
} ?>

2.11.16 Menus e departamentos

aplicativo

possui

um

menu

personalizado

habilitando fungoes especfficas a cada reparticao,


sessao criada a partir do login, para determinar

para

cada

departamento,

realizado um rastreamento da
qual departamento

usuario

pertence. A funcao "switch()" do c6digo abaixo, identifica que valor possui a variavel,
encaminhando um "include" para cada tipo de usuario.

<script sre="menuljs/menu.js" type="textljavascript"><lscript>


<link href="menu/css/menu.css"
rel="stylesheet" type="textlcss" I>
<link href="menu/css/pagina.css"
rel="stylesheet" type="textlcss" I>
<?php

sessionstartt):

$departamento_usuario
$_SESSION["departamento_usuario");
switch ($departamento_usuario) (
case 1:
include "representante .php";
break;
case 2:
include "faturamento.php";
break;
case 3:
include "producao.php";
break;
case 4:
include "admin.php";
break;
}

Para evitar que um usuario consiga acessar uma pagina responsavet por um
modulo nao pertencente ao departamento

a qual

e registrado, e utilizadas

de verlficacao

de setor, sendo assim 0 usuario sera alertado

avisando

que

aces so nao esta

autorizado,

caso

esteja

fungoes

por um dialogo
tentando

acessar

manualmente um local nao permitido.


A figura abaixo representa 0 aplicativo sendo executado
navegador,
clientes.

com 0 menu do usuario administrador

atraves de um

e a paqina de cadastro de

. . . "'' '

~o.

Ira

......

....:..

f@"!JI'_._ ..

,III'

. t"1~"'_

't_ .. 'OI.nl .p ....

Q]

D'

..........

-"._.-

-1-1-lc:...oo-ll\t-I-
..'.
CI'I'

--

CHPJ

'-

I~a...

'I

....
....

I .--..

f--Clltnl.

OtI>J/CfI'F

0'0.' ......

DIEGO DE COSTA

Ir-II

'~l

..
Figura 1: Tela do aplicativo com cadastro de clientes
Fonte: 0 autor

Em toda paqina se encontra


bloquear acesso a um departamento

uma ou mais chamadas


especifico.

de fungoes

para

Esta fun gao verifica a sessao do

usuario, identificando em qual reparticao pertence. 0 arquivo de verltlcacao tarnbem


possui um script global para ser executada sempre quando for abrangido, esse
c6digo verifica se 0 usuario real mente realizou 0 login antes de obter qualquer
conteudo do aplicativo. 0 c6digo do apendice G

e executado

sempre que incluido

em outra paqina, e suas fungoes quando sao chamadas especificamente.

3 CONCLUSAO

A qualidade

das intorrnacoes

tomada de decisoes
software

e orqanizacao

inseridas no sistema sao essencias


gerencial

exija aos usuaries operacionais,

da empresa.

importante

para a
que 0

a msercao de todas as tntorrnacoes

necessarias para poder automatizar um determinado processo de lancarnentos de


pedidos, ordens de vendas ou especiticacao de carregamento. 0 gerenciamento de
conhecimento

e gerado atraves da utilizacao de ernissoes de relat6rios com dados

concisos. Este sistema deve estar disponivel para acesso em qualquer lugar, visto a
necessidade de usuaries remotos pelo pais inteiro, sendo assim
criar mecanismos
localizacao.

que possam

Para garantir

e interessante,

proibir 0 acesso de uma determinada

a eficacia

do conjunto

do software

nao

faixa de

necessaria

utiltzacao de treinamento ao usuario remoto e local.


A criacao dos diagramas

para determinar

processos

e rotinas em que 0

sistema devera cumprir, moldam um padrao, que ajudam na sua construcao


expansao de seus m6dulos. A cada atualizacao,

com a irnplernentacao de novas

tuncoes, devera ser realizada uma nova analise para que 0 contexte proposto nao
seja afetado em sua estrutura principal, garantindo que 0 aplicativo somente deve
ser melhorado quando adicionado mecanismos uteis ao objetivo.
A criacao de um sistema a partir de uma linguagem confiavel e robusta foi de
grande

irnportancia

para atingir 0 objetivo

planejado.

PHP e mundialmente

conhecido por ser uma linguagem legivel, que ao mesmo tempo consegue construir
projetos complexos, com ambiente de rnlssao critica. validacoes locais garantem um
grande nivel de interacao com 0 usuario, permit indo que 0 desempenho do aplicativo
seja melhorado, dividindo servlcos de carga de dados entre 0 servidor e a plataforma
do cliente.
o banco de dados MySQL que e totalmente
PHP, tem

como

principal

caracteristica

sua

co mpative I com a linguagem

velocidade,

utilizado

quase

essencialmente para web, [a que conta um desempenho superior para este nicho.
Pode-se dizer que utilizar a internet como um meio para disponibilizar

acesso a um sistema portatil, representa uma grande facilidade de concentracao e


disponibilizacao

das intormacoes, onde usuarios de varies departamentos

pod em

usufruir de sistema util, tanto para vendedores quanto gerenciadores, organizando


os dados conforme as necessidades que os departamentos especificam.
Para ampfiacao do projeto no futuro

e necessario

utilizar a intormacao gerada

pelo aplicativo de uma forma mais integrada com toda a empresa,


seja implementado

mecanismos

e possivel

de inteqracao com outros aplicativos

que

locais ou

remotos, a fim de aproveitar os dados para serem utilizado em operacoes fiscais e


administrativas.

Essa inteqracao pode ser gerada, permitindo acessos simultaneos

de outros aplicativos

ao banco de dados, onde poderao

resgatar dados para

ernissao de uma nota fiscal ou lancamentos na contabilidade. Para garantir uma total
autornatizacao

de todos os procedimentos

decorrentes

da vendas de bebidas e

necessaria uma grande inteqracao com mais de um aplicativo.

REFERENCIAS

ALECRIM, Emerson. Conhecendo 0 Servidor Apache.2006. Disponivel em:


<http://www.infowester.com/servapach.php>.
Acesso em: 21 ago. 2010.
ALEXANDRE, Leandro. Valldacao de CPF e CNPJ no mesmo campo em
JavaScript. 2009. Disponivel em:<http://www.vivaolinux.com.br/script/Validacao-deCPF-e-CNPJ-no-mesmo-campo-em-javascript>.
Acesso em: 01 abr. 2011.

ANTUNES LAMIM, Jonatham. Gerando PDFs com PHP e a classe FPD. 2010.
Disponivel em:
<http://www.oficinadanet.com.br/artigo/php/gerando_pdfs_com_ph
p_e_a_class e_fpd
f_instalacao_e_primeiras_linhas_de_codigo>.
Acesso em: 23 out. 2010.

APACHE FRIENDS. XAMPP.2009. Disponivel em:


<http://www.apachefriends.org/pt_br/xampp.html>.
Acesso em: 10 out. 2010.

AURELIO, Dorival Eloy. JavaScript. 2004. Disponfvel em:


<http://orbita.starmedia.com/-edaurelio/javascript.htm>.
Acesso em: 23 out. 2010.

BENTO, Marcelo; Convertendo data com PHP. 2009. Disponivel em:


<http://www.marcelobento.com.br/tag/converter-datal>.
Acesso em: 25 abr. 2011

COAR, Ken; BOWEN, Rich. Apache Guia Pratico. Rio de Janeiro: Alta Books,
2008.272 p.

DELLA VALLE, James; ULBRICH, Henrique Cesar. Universidade


Sao Paulo: Digerati Books, 2006.352 p.

Hacker. 5. ed.

DUARTE, Eber; Implementando Integridade Referencial no MySQL 2006.


Disponivel em: <http://www.devmedia.com.br/post-1996-lmplementando-lntegridadeReferencial-no-MySQL.html>. Acesso em: 12 abr. 2011.

FERREIRA, Felipe. Linguagem PHP _ Vantagens e Aplica~oes. 2010. Disponivel


em: <http://www.artigonal.com/internet-artigos/linguagem-php-vantagens-eaplicacoes-1788643.html>. Acesso em: 23 out. 2010.

60

FIGUEIREDO, Antonio. Administra~ao de sistemas e sequrence. 1999. Disponivel


em: <http://www.ccuec.unicamp.br/revistalinfotec/admsis/admsis6-1.html>.
Acesso
em: 25 out. 2010.

FLANAGAN, David. JavaScript:


816 p.

0 Guia Definitivo.

FOROUZAN, A. Behrouz. Oomunlcacao


Sao Paulo: Artmed, 2004. 840 p.

4 ed. Sao Paulo: Artmed, 2002.

de dados e redes de computadores.3.ed.

GOURLEY, David; TOTTY, Brian. HTTP: TheDefinitiveGuide.


O'Reilly Media, 2002. 635 p.

Sebastopol, Ucranla:

FOWLER, Martin. UML essencial: um breve guia para a linguagem padrao de


modelagem de objetos. 3. ed. Porto Alegre: Bookman, 2005. 165 p.

LOGMAN, Wesley Addison. A history of HTML.1998. Disponfvel em:


<http://www.w3.org/People/Raggettlbook4/ch02.html>.
Acesso em: 23 out. 2010.

MADEIRA, Frederico; Suporte a transacoes. 2004. Disponfvel em:


<http://imasters.com.br/artigo/2787/mysql/suporte_a_transacoes/>.
Acesso em:
14/04/2011 .

MAJER, Carlos. Desenvolvimento


Web: Introdu~ao ao AJAX. [Sao Paulo], 07
maio. 2010. Disponfvel em: <http://www.ebah.com.br/desenvolvimento-webintroducao-ao-ajax-pdf-a48787.html>.
Acesso em: 23 ago. 2010.

MCLEAN, Epharaim; TURBAN, Efraim; WETHERBE, James. Tecnologia


informa~ao para gestao. 3. ed. Sao Paulo: Artmed, 2002. 645 p.

MELO, Alexandro Altair; G.F. NASCIMENTO, Mauricio. PHP Profissional.


Paulo: Novatec, 2007. 464 p.

da

Sao

MORONI, Herbert. Cria~ao de sites em Ajax. Sao Paulo: Digeratti Books, 2007.
128 p.

MUTO, Claudio Adonai. PHP e MySQL - Guia lntrodutorlo.


Brasport, 2006. 412 p.

3. ed. Rio de Janeiro:

61

OTSUKA, Joice Lee. SAACI - Sistema de Apoio a Aprendizagem Colaborativa


Internet. Fluxograma. 1999. 127 f. Dissertacao (Mestrado em Ciencia da
Computacao) - Universidade Federal do Rio Grande do Sui, Porto Alegre, 1999.

na

PAIVA, Raphael. Desmitificando 0 Ajax. Esquema. 2005. Disponivel em:


<http://www.jack.eti.br/www/arquivos/apostilas/web/apostila_ajax.pdf>.
Acesso em:
23 ago. 2010.

PHP GROUP. PHP. 2010. Disponivel em: <httpJ/php.net/>. Acesso em: 23 out. 2010.

PHPMYADMIN DEVEL TEAM. phpMyAdmin: About.2003. Disponivel em:


<http://www.phpmyadmin.netlhome_page/index.php>.
Acesso em: 19 out. 2010.

PLATHEY, Oliver. FPDFLibrary.


Acesso em: 15 ago. 2010.

2008. Disponivel em: <http://www.fpdf.org>.

REMOALDO, Pedro. Guia Pratico do Dreamweaver CS3 com PHP, JavaScript


Ajax. Lisboa, Portugal:Centro Atlantico, 2008. 676 p.

RODRIGUES DE FREITAS; Andrey. Pericia forense aplicada a informatica:


ambiente Microsoft. Rio de Janeiro: Brasport, 2006.215 p.

SANTOS, Alfredo. Quem mexeu no meu sistema?:


intormacao. Rio de Janeiro: Brasport, 2008. 212 p.

SOMERA, Guilherme. Treinamento


2006. 160 p.

Sequranca em sistemas de

pratico em CSS. Sao Paulo: Digeratti Books,

SOUZA, Sandro J. Aextens80 MySQLi. 2007. Disponfvel em:


<http://www.htmlstaff.org/ver.php?id=1 0071 >.Acesso em: 22 ago. 2010.

STALLINGS, William. Redes e Sistemas


Janeiro: Elsevier, 2005. 460 p.

de Cornunlcacao

de Dados. Rio de

STEVENS, W. Richard; FENNER, Bill; RUDOFF, M. Andrew. Programa(fio


Unix. Sao Paulo: Artmed, 2004.906 p.

de Rede

62

STROPARO, Elder. Historia do MySOL. 2010. Disponfvel em:


<http://elderstroparo.blogspot.com/2010/01/historia-do-mysql.html>.
out. 2010.

Acesso em: 23

TRIACCA, Anderson. Hist6ria do Javascript. Disponfvel em:


<http://www.andersontriacca.com/index.php?Hist%F3ria-doJavascrtptsldpostaqern-z.
Acesso em: 15 out. 2010.

TURBAN, Efraim; MCLEAN, Ephraim; WETHERBE, James. Tecnologia da


lntormacao para Gestao. Sao Paulo: Artmed, 2002. 660 p.

VIDEIRO, Rafael. Cria~ao de bases de dados em linguagem SOL. Disponivel em:


<http://mysql.softonic.com.br/>. Acesso em: 20 out. 2010.

VIEIRA, Leandro. As novas funcionalidade do Dreamweaver CS3. Disponfvel em:


<http://www.imasters.com.br/artigo/5858/dreamweaver/as_novas_funcionalidades_d
o_dreamweaver_cs3/>. Acesso em: 22 out. 2010.

WELLING, Luke; THOMSON, Laura. PHP e MySOL Desenvolvimento Web. Rio de


Janeiro: Elsevier, 2003. 675 p.

WORLD WIDE WEB CONSORTIUM. Extensible Markup Language (XML).


Disponivel em: <http://www.w3.org/XMU>. Acesso em: 15 out. 2010.

63

APENDICES

64

APENDICE A - Diagrama de sequencia

~------------I :
!

I
-n ~n==
!

t ~I

r _

---~--i~----- ----

Ii

.l

-n

--

---.---j --i

J --: ----

. j

I ~} i.. .~----------

------------~---

65

APENDICE B - Diagrama de classes


pkg)
P~dldo

Olente
_ Id_cllente . int
_ nome: string
_ tndere~o . string
_ uf : string
_ cldade string
_ data Date
_ observa~6es : string
_ usuarlo . string
r

0 ..

_ Id"pedldo : Int
_ Id_ordem : Int
_ Id_cllente . Int
_ valor. float
_ desconto float
_ condpgto : nrl n9
_ login: string
_ carregamento : boolean

+ IndulrO : void
+ editarO void
+ excluirO : void

+ cadastrarO : void
+ edltarO . void

trens

1.."

_ Id_ltens . Int
_ id..produto . Int
_ id_pedido : 1m
_ quantidade : int
_ vtunitario . float
_ vtst float
_ vltoral : float
+ inciulrO : void
+ deletarO : void
1

0 ..

Usuarlo

_ Id_usuarlo Int
_ nome string
_ login. string
_ senha : sui ng
_ departamento:
string
+ cadaslrarO : void
+ edltarO : void
+ desativarO . void

....!..

1. .

Ordem

Produto

_ Id ordem : Int
_ qu-antldade : Int
_ peso float
_ entregas : Int
_ transportadora : string
_ motorlSla : sIring
_ datacarreg : Dale

_ Id_produto : Int
_ nome char
_ peso: float
_ data: Date
_ observacees : char
_ Ipl . double

+ IncluirO : void
+ edilarO : void
+ deletarO : void

+ editarO : void
+ deletarO : void

+ cadastrarO : void

I't

66

APENDICE C - C6digo HTML do torrnulario para a autentlcacao do usuario


<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
Transitional//EN"
''http://www.w3.org/TR/xhtmI1 /D TD/xhtm 11-transitional.dtd">
-chtrnl xmlns="http://www.w3.org/1999/xhtml''>
<meta htjp-equive'Content-Type"
contente'text/htrnl: charset=ISO-8859-1" I>
dink href="menu/css/menu.css"
rel="stylesheet" type="texVcss" I>
dink href="menu/css/pagina.css"
rel="stylesheet" type="textlcss" I>
-e/styles-ebr I>
<table
width="400"
bordere'D"
align="center"><table
width="400"
height="144"
bordere'O"
align="center">
<form id="form 1" narna-'torm 1" methode'post" action="admin!logar.php">

-etr
td width="94 ">&nbsp;<ltd>
-etd width="296"><h3><strong>Efetue
0 login<fstrong></h3><ltd>
<Itr>
<tr>
-ctde-cdiv align="right">Usu&aacute;rio:<fdiv><ftd>

-etde<label>
<input type="text" name="login" id="login" I>
<!label>
<ltd>

Iir
<tr>
ctds-cdiv align="right">Senha:</div><ftd>
<ld>
-dabeb<input type="password" narne-r'senha" id="senha" I>
<!label>
<ltd>
-dt:
<lr>
<ld><div align="right">Departamento:<fdiv><1Id>
-ctde-cselect name="dpto" id="dpto">
<option value="1 ">Representante<loption>
<option value="2">Faturamento<loption>
<option value="3">Producao<loption>
<option value="4">Admin<loption>
</select><ftd>
</tr>
<tr>
-etd height="37"><ltd>
-etde-cinput typa-'submit'
<ftr>
<!form>
-e/table

-e/hfmb-

valua-'Loqar'

classe'botao' I><ftd>

67

APENDICE D - C6digo PHP utilizado para cadastro


<?php
include " ../conexao.php";
include "dataconverter.php";
$id = $_POST['id');
$nome = $_POST[,nome1;
$endereco = $_POST['endereco');
$uf = $_POST['uf');
$cidade = $_POST['cidade');
$enderecoentrega = $_POST[,enderecoentrega1;
$data = $_POST[,data');
$observacoes = $_POST[,observacoes1;
$usuario = $_POST['usuario');
$id = preg_replace("I\D+/", '", $id); II remove qualquer caracter nao numerico
$data = converterData($data);
if($_POST['id')==" and $_GET[,funcao1 != "excluir_cliente" and $_GET[,funcao1 != "editar_cliente" )
{
echo "<script type='text/javascript'>alert('lnclua
0 CNPJ do CLiENTE!');<lscript>";
echo" -cscrjptswlndow.locatione' .Jcliente.php' ;</script>";
}
if($_POST['nome')==" and $_GET['funcao') != "excluir_cliente")
{
echo "<script type='text/javascript'>alert('lnclua
0 NOMEI');</script>";
echo" escrptswindow.locatione'
.Jcliente.php' ;</script>";
}
if($_POST[,endereco')==" and $_GET(,funcao') != "excluir_cliente")
{
echo "<script type='text/javascript'>alert('lnclua
0 ENDERECO!');</scripl>";
echo "cscrjpte-window.location-' ..Icliente.php';<lscripl>";
}
if($_POST['data1==" and $_GET[,funcao1 != "excluir_cliente")
{
echo "<script type='textljavascript'>alert('lnclua
a data do cadastro!');<lscripl>";
echo" -cscrjpb-window.locatione' .Jcliente.php' ;</scripl>";
}
if($_POST['uf')==" and $_GET[,funcao1 != "excluir_cliente")
{
echo "<script type='text/javascript'>alert('Selecione
0 Estado!');</script>";
echo" -escrote-windowlocation-' .Jcliente.php' ;</script>";
}
if{$_POST['cidade')==" and $_GET(,funcao1 != "excluir_cliente")
(
echo" <script type='text/javascript'>alert('lnclua
a cidade!') ;</scripl>";
echo" escrotswlndow.tocatione' .Jcliente.php' ;</script>";
}
else ~($_GET['funcao') == "gravar_cliente" and $_POST['id')I=" and $_POST(,nome11=" and
$_POSTrendereco']I="
and $_POST['data')!=")
{
$sql_gravar = mysql_query("INSERT INTO cliente (id_cliente, nome, endereco, uf,
cidade,enderecoentrega,
data, observacoes, usuario) value
('$id', '$nome' ,'$endereco', '$uf', '$cidade',
'$enderecoentrega' " $d ata', '$observacoes', '$usuario') H);
echo "<script type='textljavascript'>alert('Cliente
Cadaslrado!') ;</scripl>";
echo" -cscrjptc-window.locatlone' .Jclienle.php' ;</scripl>";
}
else if($_GET['funcao') == "edilar_cliente" and $_POST(,nome')!=" and $_POSTrendereco')!="
and $_POST['dala')!=")
{
$id = $_GET[,icl1;

68

$retomo = $_GET[,retorno');
$sql_alterar = mysql_query("UPDATE cliente SET nomee'Snorne',
encereco-'sercereco', uf='$uf', cidade='$cidade', enderecoentrega='$enderecoentrega',data='$data',
observacoese'sobservacoes' WHERE id_cliente = '$id'");
header("Location: $retomo?nome_busca=$nome");
}
if($_GET['funcao1 == "excluir_cliente"){
$id = $_GET['id');
$retomo = $_GET['retorno'];
$sql_del = mysql_query("DELETE FROM cliente WHERE id_cliente = '$id'");
header("Location: $retomo");

69

APENDICE E - C6digo de inclusao de pedidos


<?php
include " ../conexao.php";
include "dataconverter.php";
$condicao = $_POST['condicao');
if($ _ GET['fu ncao1=="inclu i_pedido ")

$id_cliente = $_GET('id_cliente');
session jstartf);
$_SESSION[pedido_dados)[id_clientej
= $id_cliente;
head er("location: ..lpedido _inciuLphp?fu ncac-editar _ cliente");
//&id_cliente=$id_cliente
}
if($_GET['funcao'j=="incluir_iten")
(
$id_produto = $_GET[,id_produto1;
$quantidade = $_POST[,quantidade'j;
$preco = $_POST[,preco1;

session staru):
$_SESSION[indicej = $_SESSION[indicej+
$indice = $_SESSION[indicej;

1;

$_SESSION[pedido)[$indice)[id_produto)
= $id_produto;
$_SESSION[pedidoj($indice)[quantidade)
= $quantidade;
$_SESSION[pedidoj($indice)[preco)
= $preco;
$sql_ipi = mysql_query("SELECT ipi FROM produto WHERE id_produto = '$id_produto'");
if (isset($sql_ipi){
while($linha_produto = mysql_fetch_array($sql_ipi)(
$tabela_ipi = $linha_produto['ipi1;
}
}
$_SESSION[pedidoj($indice)[ipij
= $tabela_ipi;
$_SESSION[pedidoj($indice)[total)
= (($preco+$tabela_ipi)*$quantidade);
//--- DESCOBRIR TOTAL DO PEDIDO
$indice = $_SESSION[indice);
$_SESSION[pedido_dados)[total)
= $_SESSION[pedido_dados)[total)
+
$_SESSION[pedido)[$indicej(totalj;
header("location: ..lpedido_incluLphp?funcao=editar_cliente");
}
if($_GET('funcao'j=="adicionais")
{
$sql_adicionais = mysql_query("UPDATE pedido SET condpgto = ('$condicao') where
id_pedido = ('$id_pedido')");
$sql_adicionais = mysql_query("UPDATE pedido SET confirm ado = ('1') where id_pedido =
('$id_pedido')");
}
//**CONFIRMAQAO DO PEDIDO
if($_ GET['funcao1 == "confirmar")
(
//-- PEDIDO
session jstartt):
$id_cliente = $_SESSION[pedido_dadosj(id_clientej;
$vltotal = $_SESSION[pedido_dados)[totaJ);

70

I/---INSERINDO PEDIDO
$Iogin_usuario
$_SESSION("login_usuario"];
$sql_confirma_pedido
mysql_query("INSERT INTO pedido (id_cliente, valor, condpgto,
login, carregamento) value ('$id_cliente','$vltotal':$condpgto','$login_usuario','O')");
$tabela_pedido
mysql_query("SELECT max(id_pedido) FROM pedido");
if (isset($tabela_pedido){
while($linha_pedido = mysql_fetch_array($tabela_pedido){
$numero_pedido = $Iinha_pedido['max(id_pedido)'];
}
}
$_SESSION[pedido_dados][id_pedido]
= $numero_pedido;

/I-------ITENS
$indice = $_SESSION[indice];
$contador_itens = 1;
while ($contador_itens<=$indice)
{
$id_produto = $_SESSION[pedido][$contador_~ensj[id_produto];
$quantidade = $_SESS 10N[pedidoj[$contador _itens][ quantidade];
$preco = $_SESSION[pedido][$contador_itens][preco];
$total_itens = $_SESSION[pedidoj[$contador_itensj[total];
$sql_confirma_itens = mysql_query("INSERT INTO itens (id_produto, id_pedido, quantidade,
vlunitario, vltotal) value ('$id_produtO','$numero_pedido','$quantidade','$preco','$total_itens')");
$contador_itens
= $contador_itens+l;
$_SESSION[pedido_dados]
= NULL;
$_SESSION[pedido] = NULL;
echo'xscript LANGUAGE=\"Javascript\">alert(\"Pedido
cadastrado - Numero:
$numero_pedido\");</SCRIPT>";
echo "cscrjpte-window.location-' ..Ipedido_inciuLphp';</script>";

I/**INSERE ITEM NA EDlyAO DO PEDIDO


if($_GET['funcao1 == 'incluirjten_edita')
{
$id = $_POST['id_pedido'];
} ?>

71

APENDICE F - C6digo de mclusao e batxas de ordens


<?php
include " ../conexao.php";
include "dataconverter.php";
if ($_POSTrfuncao'] == "adicionar")
{
$transportadora = $_POST[,transportadora1;
$motorista = $_POST[,motorista1;
$datacarreg = $_POST[,datacarreg1;
if ($transportadora == ,on or $motorista == "" or $datacarreg == "") {
echo "<script typee'text'[avascrlpt'salertf'Preencha
todos os camposl'j.e/scripc-":
echo" -cscrtptswindow.locatione'. Jordem.php';<lscripl> ";
}
if ($_POSTrid_pedido') != "") {
$ordem_id1 = mysql_query("insert into ordem (quantidade, peso) values (0,0)");
$ordem_id2 = mysql_query("SELECT max(id_ordem) FROM ordem");
$ordem_id3 = mysql_fetch_array($ordem_id2);
$ordem_id = $ordem_id3['max(id_ordem)');
$entregas = 0;
foreach ($_POST[,id_pedidol as $pedido_id) {
$entregas = $entregas + 1 ;
$sql = " update pedido set id_ordem = '$ordem_id' where id_pedido = '$pedido_id'";
if ($sql) (
$sql = mysql_query($sql);
}
$outras1 = mysql_query("select sum(peso), sum(quantidade)
where pedido.id_ordem = '$ordem_id'
and pedido.id_pedido = '$pedido_id'
and itens.id_pedido = pedido.id_pedido
and itens.id_produto = produto.id_produto");
if (isset($outras 1 {
while ($linha_ordem = mysql_fetch_array($outras 1 (
$peso = $linha_ordem['sum(peso)'J;
$quantidade = $Iinha_ordemfsum(quantidade)');

from pedido, produto, itens

}
//--TRATAMENTO FINAL
$peso = $peso $quantidade;
$datacarreg = converterData($datacarreg);
//--INSERQAO FINAL
$final = mysql_query("update ordem set quantidade = '$quantidade', peso = '$peso', entregas
='$entregas', transportadora = '$transportadora', motorista = '$motorista', datacarreg = '$datacarreg'
where id_ordem = '$ordem_id"');
echo "<script type='texVjavascript'>alert('Ordem
criada - Numero: $ordem_id');<lscripl>";
echo "<script>window.location='.Jordem.php';<lscripl>";
} else {
echo "<script type='texVjavascript'>alert('Selecione
algum pedidol'j.e/scripb-":
echo "cscrlpb-wincow.location-,' ..!ordem.php';<lscript>";
}

u- BAIXA DE OADEM

if ($_POSTrfuncao') == "baixar")
(
if ($_POST['id_ordem') == "")
{
echo "<script type='text/javascript'>alert('Selecione
alguma ordeml'j.e/scripts";
echo" -cscriptswindow.locatione' ../ordem _baixa.php' ;</scripl>";