70
Marcos Antonio Wilceki CONFIRMA9AO ELETRONICA DE ENDERE90 Projelo de gradua9ao apresentado no Curso Superior de Tecnologia em Informatica da Universidade Tuiuti do Parana. Orienlador: Professor Fausto Vanln. CURITIBA 2006

MarcosAntonio Wilceki - tcconline.utp.brtcconline.utp.br/media/tcc/2014/09/CONFIRMACAO-ELETRONICA.pdf · FIGURA 01 - MOSTRA A ARQUITETURA DO RUP . 15 FIGURA 02 - EIXO HORIZONTAL (FASES)

Embed Size (px)

Citation preview

Marcos Antonio Wilceki

CONFIRMA9AO ELETRONICA DE ENDERE90

Projelo de gradua9ao apresentado no CursoSuperior de Tecnologia em Informatica daUniversidade Tuiuti do Parana

Orienlador Professor Fausto Vanln

CURITIBA

2006

TERMO DE APROVACAOMarcos Antonio Wilceki

CONFIRMACAO ELETRONICA DE ENDERECO

Monografia foi julgada e aprovada para a obtenyao do titulo do grau de

Tecn61ogo em Informatica no Curso Superior de Tecnologia em Informatica da

Universidade Tuiuti do Parana

Curitiba 4 de dezembro de 2006

Curso Superior de Tecnologia em lnfomatica

Universidade Tuiuti do Parana

Orientador Prof Fausto Vanin

Universidade Tuiuti do Parana

Prof Angela Zatti

Universidade Tuiuti do Parana

Prof Ricardo Pereira

Universidade luiuti do Parana

Prof Marcos Canalli

Universidade luiuti do Parana

RESUMO

A constants evolucao tecnol6gica e a busca par S8IViyos mais ageis e eficazes

impulsionaram a necessidade de urn novo mecanisme que auxiliasse na valida9ao

dos documentos telefones e dados cadastrais apresentados pelo cliente ao efetuar

compras a prazo no comercio em geral Visualizando esla necessidade de

atendimento rapido e eliminando a burocracia de fotocopias de documentos

comprovantes de endereyos autenticaltoes de papeis apresentados entre Quiros

surgiu a ideia deste projeto 0 projeto desenvolvido foj a confirmayao eletr6nica de

enderego E urn portal na web que ap6s a validaltao do usuario e senha atraves da

digitacao de urn numera de documento au telefone faz-s8 a varredura em tempo

real em uma base de dad os e traz todas as informayoes encontradas para aquele

telefone e documento compostas por nome enderecos telefones e documentos De

posse dessas informacoes 0 associado (usuario cadastrado) faz a validacao atraves

do confronto dos documenlos apresenlados e da ficha preenchida pelo cliente que

esla efetuando seu cadastrado na loja ou comercio em geral com objetivo de efetuar

compras a prazo e facilitar 0 seu cadastramento Com isso 0 associado ganha

seguranca com informacoes atualizadas

LlSTA DE FIGURAS

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP 15FIGURA 02 - EIXO HORIZONTAL (FASES) 16FIGURA 03 - REPRESENTACAo 0 PLANEJAMENTO E 0 ESFORCO DEPROGRAMACAo 17FIGURA 04 - EIXO VERTICAL (PROCESSOS) 18FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE 19FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS 22FIGURA 07 - DIAGRAMA DE CONTEXTO 24FIGURA 08 - TI ATUALIZA BASE DE DADOS 25FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS 25FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS 25FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS 39FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

MFIGURA 13 - TELA DE ACESSO AO PORTAL CONFIRMACAO DEENDERECO 41FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS 62FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DEDADOS 67

LlSTA DE SIGLAS

BC - Banco Central

CD - Compact Disc

CEE - Confirmaao Eletronica de Endereos

CNPJ - Cadastro Nacional de Pessoas Juridicas

CPF - Cadastro de Pessoas Fisicas

DER - Diagrama Entidade Relacionamento

DFD - Diagrama de Fluxo de Dados

FMI - Fundo Monetario Internacional

HD - Hard Disk

HTML - HiperText Markup Language

MHz - MegaHertz

PIB - Produto Interne Bruto

PHP - HiperText Preprocessor (sigla recursiva)

RAM - Random Access Memory

RUP - Rational Unified Process

TI - Tecnologia da Informa9ao

WEB - Abreviatura para designar Word Wide Web (WWW)

WWW - Word Wide Web

SUMARIO

1 INTRODUltAO bullbull 82 OBJETIVO 93 JUSTIFICATIVAS 114 ESTUDO CONCEITUAL 1341 PRODUTOS A SEREM GERADOS PELO PROJETO 145 FUNDAMENTOS TEORICOS 1551 FASES DE PLANEJAMENTO 1752 PROCESSOS DE ENGENHARIA DE SOFTWARE 186 FERRAMENTAS PARA IMPLEMENTAltAO 217 METODOLOGIA DE DESENVOLVIMENTO 2371 ANALISE ESSENCIAL 2372 DECLARAtAO DOS OBJETIVOS DO SISTEMA 2373 LlSTA DE EVENTOS 2474 DIAGRAMA DE CONTEXTO 2475 DFD - DIAGRAMA DE FLUXO DE DADOS 258 TESTES 269 CONCLUSAO 2810 DESENVOLVIMENTOS FUTUROS 2911 MANUAL 30111INSTALAtAO 301111 Donwload dos Itens Necessarios 301112 InstalaltBodos Componentes Baixados 301113 ConfiguraltBo dos Componentes 311114 InstalaltBoda ConfirmaltBo Eletr6nica de Enderelto 341120PERAtAO 341121 Administrador do Acesso do Banco de Dados 341122 Usuario Associado para Consultar 0 Banco de Dados 35REFERENCIAS 3612 APENDICE 1 - DICIONARIO DO BANCO DE DADOS 3912 APENDICE 2 - TELAS E COOl GO FONTE 41

1 INTRODU9AO

A origem dos dados cadastrais remonta ao inicio do seculo XIX em parses

como as Estados Unidos 0 Canada a Alemanha e a Austria Surgiram da

necessidade de as comerciantes locais conhecerem 0 hist6rico de cnsectdito de seus

clientes para com ales realizarem negocios Inicialmante eram mantidos par

cooperativas ou associaroes sem fins lucrativQs a fim de compilar informayoes

idoneas que pudessem assistir as come reiantes locais de urn determinado

segmenta em suas decisoes de eredilo e de neg6cios

Mais tarde com a expansao dos mercados e a evoluyao tecnol6gica

surgiram na necessidade e na possibilidade de centralizayao da coleta de

informacoes e no seu compartilhamento nao apenas entre as comerciantes de urn

mesmo segmento mas sim entre diversos ramos de atividade e com isso os

bancos de dados de proteyao ao eredito organizados tais como eonheeemos hoje

Ao eontrario do que se verifiea nos Estados Unidos e nos parses que

inlegram a Comunidade Europeia por exemplo cujos sistemas de eoneessao de

eredilo sao mais pautados na analise de informa90es positivas a eultura brasileira

para eoneessao de eredito desenvolveumiddotse sobretudo a partir da anota9ao da

analise e da cireula9aa de infarma90es de cunha negativ~ ou seja que retratam os

eompromissos assumidos e nao cumpridos pelos eadastrados

(httpwwwserasacombrguiadoacoes 2006)

20BJETIVO

o principal objetivo e contribuir com a reduyao da taxa de juros e aumento

nas vendas a erectito Com a reuniao de informacoes id6neas em bancos de dados

o mercado financeiro t8m uma das melhores alternativas para reduzir 0 risco de

inadimplencia Ou seja pessoas ffsicas e jurfdicas que possuam urn cadastre com

informacoes positivas devem ter 0 custo do emprestimo reduzido

Fai identificado este niche de mercado 0 qual e de suma importancia para a

economia nacional pais S8 refere a uma moderna conceP9ao de serviyo de

informacoes que e destinado a dinamizar 0 mercado de consumo Visa a

identifica9ao dos riscos inerentes ao processo de concessao de cnsectdito com 0

objetivo de validar as informacoes cadastrais para assegurar que 0 cliente tem 0

perfil de honrar seus compromissos financeiros

o concedente de credito analisa a pretensao do tomador com base nas

informayoes cadastrais fornecidas pela confirmayao eletr6nica de endereyo E uma

parte fundamental do cadastro positiv~ para facilitar a concessao do credito

Portanto a confirmay3o eletr6nica de endereyo assegura a validade de informayoes

e documentos id6neos pois 0 potencial credor pode vislumbrar um quadro completo

de dados e registros sobre 0 consumidor E uma ferramenta essencial e

complementar ao processo da analise e decisao de credito

A confirmayao eletr6nica de endereyo alem de contribuir para a melhoria do

sistema financeiro nacional beneficia 0 consumidor em virtude da maior seguranya

e estabilidade das operayoes de credito possibilitando a utilizayao das informayoes

10

inclusive para credito pre-aprovado sem nenhuma requisiyao formal pDr parte do

tomador potencial uma vez suas informa90es estao sempre atualizadas

II

3 JUSTIFICATIVAS

o baixo potencial de eredito de alguns pafses emergentes como par

exemplo 0 Brasil diz respeito a lenta reayao do sistema de crediario frente as

inova90es tecnol6gicas com a maior rapidez de compartilhamento de informacoes

sabre as tomadores

Hit estimativas que indicam que 0 cnsectdito voltado ao consume pode crescer

no Brasil Nos parses que tern urn controle eficiente das informayoes positivas de

bons pagadores que sao amplamente implementados e difundidos 0 erect ito chega

a ser tres vezes superior a media internacional Como exemplo pode-s8 citar a

Alemanha a qual possui urn dos mais completos e avancados cadastros positivQS

do mundo (httpwwwserasacombr 2006)

Todas as consideracoes acima demonstram a importancia da confirmayao

eletr6nica de endereyo Trata-se de uma tendencia mundial irreverslvel a ser

futuramente implementada no Brasil que se revela como instrumento de suma

importancia para 0 desenvolvimento econ6mico do Pais

Alem disso conferem as relayoes de credito muito mais velocidade menos

riscos mais seguranya uma vez que eliminam a circulayao de fichas cadastrais e

conseqDentemente barateiam custos

Porem para a correta e justa aferiyao da capaeidade de cada tomador de

eredito deve-se eonsiderar um universe maior composto nao apenas por

informayoes de inadimplemento mas tambem pelos compromissos assumidos e

pontualmente adimplidos pelo cadastrado

12

Oessa forma sera dado para concedente averiguar S8 eventual informayao

negativa e excepcional no historico de eredito do cadastrado au 58 e parte de urn

comportamento reiterado facultando-Ihe 0 calculo preciso e individualizado do Gusto

do capital

A confirmacao eletr6nica de endereyo e uma parte fundamental do cadastro

positivQ portanto rnais do que urn valor agregado aos servicos oferecidos pelos

bancos de dados de proteyao ao eredito constituindo-se em urn direito das pessoas

naturais e juridicas ter a sua capacidade de pagamento avaliada com precisao e

completude a tim de que sejam a elas aplicaveis as taxas de juros condizentes com

o risco das operacoes que contratarem

E cabe ressaltar que a experiencia de parses que utilizam esse sistema

prova que ele contribui consideravelmente para a reduyao dos juros e aumento das

vendas a credito

4 ESTUDO CONCEITUAL

Superadas estas quest6es e imperioso reconhecer a importancia da

confirmagao eletronica de enderego e documentos que e uma parte fundamental do

cadastre positiv~ bern como os procectimentos que devem nortear a sua criagao e

manutengao pelos bancos de dados de protegao ao erect ito posta que urn sistema

baseado em informagoes positivas vai incluir mais pessoas no contingente dos que

tern aces so ao erectito enquanto 0 sistema de informacoes negativas e excludente

o Brasil ja disp6e de le9i81a98oOque disciplina as atividades dos bancos de

dados e esta preste a estabelecer mecanismos mais especfficos para cadastramento

de informagoes de natureza positiva 0 ideal seria que essa regulamentayao fosse

contemplada em uma s6 lei considerando procedimentos que continuem

assegurando ao cadastrado 0 pleno exercfcio de seus direitos e ao banco de dados

a continuidade de suas atividades conferindo equilfbrio e harmonia entre eles na

justiga das taxas de juros cobradas no mercado brasileiro mas reduzidas para a

grande maio ria dos bons pagadores

A analise da participagao do credito no produto interne brute - PIB

demonstra que 0 percentual verificado nos parses desenvolvidos como por

exemplo nos Estados Unidos (655) na Italia (822) e na Alemanha (1123) esuperior aquele verificado no Brasil (278) - (dad os 2004 conforme FMI e Be) -

demonstrando que 0 progresso socioecon6mico do Pais esta atrelado ao fomento do

credito E Ifcito concluir que os Projetos de lei em tramite no Congresso Nacional ao

disporem favoravelmente aos cadastros positiv~s alem de facilitar as relagoes de

consum~ e de credito contribuirao para 0 desenvolvimento do Brasil

(httpwwwserasacombrserasalegaI35-set-04_m1htm 2006)

14

41 PRODUTOS A SEREM GERADOS PELO PROJETO

Construgao de urn portal de acesso na WEB permitindo somente 0 aces so

de associ ados cadastrados valid ados par senha e usuario Para validar os dados

cad astra is (nome endereyo telefones e documentos) 0 associ ado informara 0

telefone do cliente au urn documento do cliente Este portal tara a busca em urn

banco de dados e trarci todas as informagoes encontractas as quais 0 associado

confrontara com as fornecidas pelo cliente Cada busca ao banco de dados podera

ser contabilizada como uma forma de cobranya per quantidades de consultas

efetuadas pelo associado no usa do servigo de dados cadastrais

15

5 FUNDAMENTOS TEORICOS

o Rational Unified Process (tambem chamado de processo RUP) e um

processo de engenharia de software Tern uma abordagem baseada em disciplinas

para atribuir tarefas e responsabilidades dentro de uma organiza9ao de

desenvolvimento Sua meta e garantir a produgao de software de alta qualidade que

atenda as necessidades dos usuarios dentro de urn cronograma e de urn of9amento

previsiveis (httpwwwwthreexcomrup 2006)

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP

Disdplinas 111nlto II-E--bo--oa-ali~es-co~ns~f7rur-0~middotmiddot11TranSlcent~1

I~ Inlaquo 1 bmiddotIIEiObl~middotnJrMji~ nOl LnlJ~~~

Itera~oes

FONTE httpwwwwthreexcomrup

o RUP tern duas dimens6es

- eixo horizontal representa 0 tempo e mostra as aspectos do cicio de vida do

processo a medida que S8 desenvolve

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

TERMO DE APROVACAOMarcos Antonio Wilceki

CONFIRMACAO ELETRONICA DE ENDERECO

Monografia foi julgada e aprovada para a obtenyao do titulo do grau de

Tecn61ogo em Informatica no Curso Superior de Tecnologia em Informatica da

Universidade Tuiuti do Parana

Curitiba 4 de dezembro de 2006

Curso Superior de Tecnologia em lnfomatica

Universidade Tuiuti do Parana

Orientador Prof Fausto Vanin

Universidade Tuiuti do Parana

Prof Angela Zatti

Universidade Tuiuti do Parana

Prof Ricardo Pereira

Universidade luiuti do Parana

Prof Marcos Canalli

Universidade luiuti do Parana

RESUMO

A constants evolucao tecnol6gica e a busca par S8IViyos mais ageis e eficazes

impulsionaram a necessidade de urn novo mecanisme que auxiliasse na valida9ao

dos documentos telefones e dados cadastrais apresentados pelo cliente ao efetuar

compras a prazo no comercio em geral Visualizando esla necessidade de

atendimento rapido e eliminando a burocracia de fotocopias de documentos

comprovantes de endereyos autenticaltoes de papeis apresentados entre Quiros

surgiu a ideia deste projeto 0 projeto desenvolvido foj a confirmayao eletr6nica de

enderego E urn portal na web que ap6s a validaltao do usuario e senha atraves da

digitacao de urn numera de documento au telefone faz-s8 a varredura em tempo

real em uma base de dad os e traz todas as informayoes encontradas para aquele

telefone e documento compostas por nome enderecos telefones e documentos De

posse dessas informacoes 0 associado (usuario cadastrado) faz a validacao atraves

do confronto dos documenlos apresenlados e da ficha preenchida pelo cliente que

esla efetuando seu cadastrado na loja ou comercio em geral com objetivo de efetuar

compras a prazo e facilitar 0 seu cadastramento Com isso 0 associado ganha

seguranca com informacoes atualizadas

LlSTA DE FIGURAS

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP 15FIGURA 02 - EIXO HORIZONTAL (FASES) 16FIGURA 03 - REPRESENTACAo 0 PLANEJAMENTO E 0 ESFORCO DEPROGRAMACAo 17FIGURA 04 - EIXO VERTICAL (PROCESSOS) 18FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE 19FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS 22FIGURA 07 - DIAGRAMA DE CONTEXTO 24FIGURA 08 - TI ATUALIZA BASE DE DADOS 25FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS 25FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS 25FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS 39FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

MFIGURA 13 - TELA DE ACESSO AO PORTAL CONFIRMACAO DEENDERECO 41FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS 62FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DEDADOS 67

LlSTA DE SIGLAS

BC - Banco Central

CD - Compact Disc

CEE - Confirmaao Eletronica de Endereos

CNPJ - Cadastro Nacional de Pessoas Juridicas

CPF - Cadastro de Pessoas Fisicas

DER - Diagrama Entidade Relacionamento

DFD - Diagrama de Fluxo de Dados

FMI - Fundo Monetario Internacional

HD - Hard Disk

HTML - HiperText Markup Language

MHz - MegaHertz

PIB - Produto Interne Bruto

PHP - HiperText Preprocessor (sigla recursiva)

RAM - Random Access Memory

RUP - Rational Unified Process

TI - Tecnologia da Informa9ao

WEB - Abreviatura para designar Word Wide Web (WWW)

WWW - Word Wide Web

SUMARIO

1 INTRODUltAO bullbull 82 OBJETIVO 93 JUSTIFICATIVAS 114 ESTUDO CONCEITUAL 1341 PRODUTOS A SEREM GERADOS PELO PROJETO 145 FUNDAMENTOS TEORICOS 1551 FASES DE PLANEJAMENTO 1752 PROCESSOS DE ENGENHARIA DE SOFTWARE 186 FERRAMENTAS PARA IMPLEMENTAltAO 217 METODOLOGIA DE DESENVOLVIMENTO 2371 ANALISE ESSENCIAL 2372 DECLARAtAO DOS OBJETIVOS DO SISTEMA 2373 LlSTA DE EVENTOS 2474 DIAGRAMA DE CONTEXTO 2475 DFD - DIAGRAMA DE FLUXO DE DADOS 258 TESTES 269 CONCLUSAO 2810 DESENVOLVIMENTOS FUTUROS 2911 MANUAL 30111INSTALAtAO 301111 Donwload dos Itens Necessarios 301112 InstalaltBodos Componentes Baixados 301113 ConfiguraltBo dos Componentes 311114 InstalaltBoda ConfirmaltBo Eletr6nica de Enderelto 341120PERAtAO 341121 Administrador do Acesso do Banco de Dados 341122 Usuario Associado para Consultar 0 Banco de Dados 35REFERENCIAS 3612 APENDICE 1 - DICIONARIO DO BANCO DE DADOS 3912 APENDICE 2 - TELAS E COOl GO FONTE 41

1 INTRODU9AO

A origem dos dados cadastrais remonta ao inicio do seculo XIX em parses

como as Estados Unidos 0 Canada a Alemanha e a Austria Surgiram da

necessidade de as comerciantes locais conhecerem 0 hist6rico de cnsectdito de seus

clientes para com ales realizarem negocios Inicialmante eram mantidos par

cooperativas ou associaroes sem fins lucrativQs a fim de compilar informayoes

idoneas que pudessem assistir as come reiantes locais de urn determinado

segmenta em suas decisoes de eredilo e de neg6cios

Mais tarde com a expansao dos mercados e a evoluyao tecnol6gica

surgiram na necessidade e na possibilidade de centralizayao da coleta de

informacoes e no seu compartilhamento nao apenas entre as comerciantes de urn

mesmo segmento mas sim entre diversos ramos de atividade e com isso os

bancos de dados de proteyao ao eredito organizados tais como eonheeemos hoje

Ao eontrario do que se verifiea nos Estados Unidos e nos parses que

inlegram a Comunidade Europeia por exemplo cujos sistemas de eoneessao de

eredilo sao mais pautados na analise de informa90es positivas a eultura brasileira

para eoneessao de eredito desenvolveumiddotse sobretudo a partir da anota9ao da

analise e da cireula9aa de infarma90es de cunha negativ~ ou seja que retratam os

eompromissos assumidos e nao cumpridos pelos eadastrados

(httpwwwserasacombrguiadoacoes 2006)

20BJETIVO

o principal objetivo e contribuir com a reduyao da taxa de juros e aumento

nas vendas a erectito Com a reuniao de informacoes id6neas em bancos de dados

o mercado financeiro t8m uma das melhores alternativas para reduzir 0 risco de

inadimplencia Ou seja pessoas ffsicas e jurfdicas que possuam urn cadastre com

informacoes positivas devem ter 0 custo do emprestimo reduzido

Fai identificado este niche de mercado 0 qual e de suma importancia para a

economia nacional pais S8 refere a uma moderna conceP9ao de serviyo de

informacoes que e destinado a dinamizar 0 mercado de consumo Visa a

identifica9ao dos riscos inerentes ao processo de concessao de cnsectdito com 0

objetivo de validar as informacoes cadastrais para assegurar que 0 cliente tem 0

perfil de honrar seus compromissos financeiros

o concedente de credito analisa a pretensao do tomador com base nas

informayoes cadastrais fornecidas pela confirmayao eletr6nica de endereyo E uma

parte fundamental do cadastro positiv~ para facilitar a concessao do credito

Portanto a confirmay3o eletr6nica de endereyo assegura a validade de informayoes

e documentos id6neos pois 0 potencial credor pode vislumbrar um quadro completo

de dados e registros sobre 0 consumidor E uma ferramenta essencial e

complementar ao processo da analise e decisao de credito

A confirmayao eletr6nica de endereyo alem de contribuir para a melhoria do

sistema financeiro nacional beneficia 0 consumidor em virtude da maior seguranya

e estabilidade das operayoes de credito possibilitando a utilizayao das informayoes

10

inclusive para credito pre-aprovado sem nenhuma requisiyao formal pDr parte do

tomador potencial uma vez suas informa90es estao sempre atualizadas

II

3 JUSTIFICATIVAS

o baixo potencial de eredito de alguns pafses emergentes como par

exemplo 0 Brasil diz respeito a lenta reayao do sistema de crediario frente as

inova90es tecnol6gicas com a maior rapidez de compartilhamento de informacoes

sabre as tomadores

Hit estimativas que indicam que 0 cnsectdito voltado ao consume pode crescer

no Brasil Nos parses que tern urn controle eficiente das informayoes positivas de

bons pagadores que sao amplamente implementados e difundidos 0 erect ito chega

a ser tres vezes superior a media internacional Como exemplo pode-s8 citar a

Alemanha a qual possui urn dos mais completos e avancados cadastros positivQS

do mundo (httpwwwserasacombr 2006)

Todas as consideracoes acima demonstram a importancia da confirmayao

eletr6nica de endereyo Trata-se de uma tendencia mundial irreverslvel a ser

futuramente implementada no Brasil que se revela como instrumento de suma

importancia para 0 desenvolvimento econ6mico do Pais

Alem disso conferem as relayoes de credito muito mais velocidade menos

riscos mais seguranya uma vez que eliminam a circulayao de fichas cadastrais e

conseqDentemente barateiam custos

Porem para a correta e justa aferiyao da capaeidade de cada tomador de

eredito deve-se eonsiderar um universe maior composto nao apenas por

informayoes de inadimplemento mas tambem pelos compromissos assumidos e

pontualmente adimplidos pelo cadastrado

12

Oessa forma sera dado para concedente averiguar S8 eventual informayao

negativa e excepcional no historico de eredito do cadastrado au 58 e parte de urn

comportamento reiterado facultando-Ihe 0 calculo preciso e individualizado do Gusto

do capital

A confirmacao eletr6nica de endereyo e uma parte fundamental do cadastro

positivQ portanto rnais do que urn valor agregado aos servicos oferecidos pelos

bancos de dados de proteyao ao eredito constituindo-se em urn direito das pessoas

naturais e juridicas ter a sua capacidade de pagamento avaliada com precisao e

completude a tim de que sejam a elas aplicaveis as taxas de juros condizentes com

o risco das operacoes que contratarem

E cabe ressaltar que a experiencia de parses que utilizam esse sistema

prova que ele contribui consideravelmente para a reduyao dos juros e aumento das

vendas a credito

4 ESTUDO CONCEITUAL

Superadas estas quest6es e imperioso reconhecer a importancia da

confirmagao eletronica de enderego e documentos que e uma parte fundamental do

cadastre positiv~ bern como os procectimentos que devem nortear a sua criagao e

manutengao pelos bancos de dados de protegao ao erect ito posta que urn sistema

baseado em informagoes positivas vai incluir mais pessoas no contingente dos que

tern aces so ao erectito enquanto 0 sistema de informacoes negativas e excludente

o Brasil ja disp6e de le9i81a98oOque disciplina as atividades dos bancos de

dados e esta preste a estabelecer mecanismos mais especfficos para cadastramento

de informagoes de natureza positiva 0 ideal seria que essa regulamentayao fosse

contemplada em uma s6 lei considerando procedimentos que continuem

assegurando ao cadastrado 0 pleno exercfcio de seus direitos e ao banco de dados

a continuidade de suas atividades conferindo equilfbrio e harmonia entre eles na

justiga das taxas de juros cobradas no mercado brasileiro mas reduzidas para a

grande maio ria dos bons pagadores

A analise da participagao do credito no produto interne brute - PIB

demonstra que 0 percentual verificado nos parses desenvolvidos como por

exemplo nos Estados Unidos (655) na Italia (822) e na Alemanha (1123) esuperior aquele verificado no Brasil (278) - (dad os 2004 conforme FMI e Be) -

demonstrando que 0 progresso socioecon6mico do Pais esta atrelado ao fomento do

credito E Ifcito concluir que os Projetos de lei em tramite no Congresso Nacional ao

disporem favoravelmente aos cadastros positiv~s alem de facilitar as relagoes de

consum~ e de credito contribuirao para 0 desenvolvimento do Brasil

(httpwwwserasacombrserasalegaI35-set-04_m1htm 2006)

14

41 PRODUTOS A SEREM GERADOS PELO PROJETO

Construgao de urn portal de acesso na WEB permitindo somente 0 aces so

de associ ados cadastrados valid ados par senha e usuario Para validar os dados

cad astra is (nome endereyo telefones e documentos) 0 associ ado informara 0

telefone do cliente au urn documento do cliente Este portal tara a busca em urn

banco de dados e trarci todas as informagoes encontractas as quais 0 associado

confrontara com as fornecidas pelo cliente Cada busca ao banco de dados podera

ser contabilizada como uma forma de cobranya per quantidades de consultas

efetuadas pelo associado no usa do servigo de dados cadastrais

15

5 FUNDAMENTOS TEORICOS

o Rational Unified Process (tambem chamado de processo RUP) e um

processo de engenharia de software Tern uma abordagem baseada em disciplinas

para atribuir tarefas e responsabilidades dentro de uma organiza9ao de

desenvolvimento Sua meta e garantir a produgao de software de alta qualidade que

atenda as necessidades dos usuarios dentro de urn cronograma e de urn of9amento

previsiveis (httpwwwwthreexcomrup 2006)

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP

Disdplinas 111nlto II-E--bo--oa-ali~es-co~ns~f7rur-0~middotmiddot11TranSlcent~1

I~ Inlaquo 1 bmiddotIIEiObl~middotnJrMji~ nOl LnlJ~~~

Itera~oes

FONTE httpwwwwthreexcomrup

o RUP tern duas dimens6es

- eixo horizontal representa 0 tempo e mostra as aspectos do cicio de vida do

processo a medida que S8 desenvolve

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

RESUMO

A constants evolucao tecnol6gica e a busca par S8IViyos mais ageis e eficazes

impulsionaram a necessidade de urn novo mecanisme que auxiliasse na valida9ao

dos documentos telefones e dados cadastrais apresentados pelo cliente ao efetuar

compras a prazo no comercio em geral Visualizando esla necessidade de

atendimento rapido e eliminando a burocracia de fotocopias de documentos

comprovantes de endereyos autenticaltoes de papeis apresentados entre Quiros

surgiu a ideia deste projeto 0 projeto desenvolvido foj a confirmayao eletr6nica de

enderego E urn portal na web que ap6s a validaltao do usuario e senha atraves da

digitacao de urn numera de documento au telefone faz-s8 a varredura em tempo

real em uma base de dad os e traz todas as informayoes encontradas para aquele

telefone e documento compostas por nome enderecos telefones e documentos De

posse dessas informacoes 0 associado (usuario cadastrado) faz a validacao atraves

do confronto dos documenlos apresenlados e da ficha preenchida pelo cliente que

esla efetuando seu cadastrado na loja ou comercio em geral com objetivo de efetuar

compras a prazo e facilitar 0 seu cadastramento Com isso 0 associado ganha

seguranca com informacoes atualizadas

LlSTA DE FIGURAS

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP 15FIGURA 02 - EIXO HORIZONTAL (FASES) 16FIGURA 03 - REPRESENTACAo 0 PLANEJAMENTO E 0 ESFORCO DEPROGRAMACAo 17FIGURA 04 - EIXO VERTICAL (PROCESSOS) 18FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE 19FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS 22FIGURA 07 - DIAGRAMA DE CONTEXTO 24FIGURA 08 - TI ATUALIZA BASE DE DADOS 25FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS 25FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS 25FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS 39FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

MFIGURA 13 - TELA DE ACESSO AO PORTAL CONFIRMACAO DEENDERECO 41FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS 62FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DEDADOS 67

LlSTA DE SIGLAS

BC - Banco Central

CD - Compact Disc

CEE - Confirmaao Eletronica de Endereos

CNPJ - Cadastro Nacional de Pessoas Juridicas

CPF - Cadastro de Pessoas Fisicas

DER - Diagrama Entidade Relacionamento

DFD - Diagrama de Fluxo de Dados

FMI - Fundo Monetario Internacional

HD - Hard Disk

HTML - HiperText Markup Language

MHz - MegaHertz

PIB - Produto Interne Bruto

PHP - HiperText Preprocessor (sigla recursiva)

RAM - Random Access Memory

RUP - Rational Unified Process

TI - Tecnologia da Informa9ao

WEB - Abreviatura para designar Word Wide Web (WWW)

WWW - Word Wide Web

SUMARIO

1 INTRODUltAO bullbull 82 OBJETIVO 93 JUSTIFICATIVAS 114 ESTUDO CONCEITUAL 1341 PRODUTOS A SEREM GERADOS PELO PROJETO 145 FUNDAMENTOS TEORICOS 1551 FASES DE PLANEJAMENTO 1752 PROCESSOS DE ENGENHARIA DE SOFTWARE 186 FERRAMENTAS PARA IMPLEMENTAltAO 217 METODOLOGIA DE DESENVOLVIMENTO 2371 ANALISE ESSENCIAL 2372 DECLARAtAO DOS OBJETIVOS DO SISTEMA 2373 LlSTA DE EVENTOS 2474 DIAGRAMA DE CONTEXTO 2475 DFD - DIAGRAMA DE FLUXO DE DADOS 258 TESTES 269 CONCLUSAO 2810 DESENVOLVIMENTOS FUTUROS 2911 MANUAL 30111INSTALAtAO 301111 Donwload dos Itens Necessarios 301112 InstalaltBodos Componentes Baixados 301113 ConfiguraltBo dos Componentes 311114 InstalaltBoda ConfirmaltBo Eletr6nica de Enderelto 341120PERAtAO 341121 Administrador do Acesso do Banco de Dados 341122 Usuario Associado para Consultar 0 Banco de Dados 35REFERENCIAS 3612 APENDICE 1 - DICIONARIO DO BANCO DE DADOS 3912 APENDICE 2 - TELAS E COOl GO FONTE 41

1 INTRODU9AO

A origem dos dados cadastrais remonta ao inicio do seculo XIX em parses

como as Estados Unidos 0 Canada a Alemanha e a Austria Surgiram da

necessidade de as comerciantes locais conhecerem 0 hist6rico de cnsectdito de seus

clientes para com ales realizarem negocios Inicialmante eram mantidos par

cooperativas ou associaroes sem fins lucrativQs a fim de compilar informayoes

idoneas que pudessem assistir as come reiantes locais de urn determinado

segmenta em suas decisoes de eredilo e de neg6cios

Mais tarde com a expansao dos mercados e a evoluyao tecnol6gica

surgiram na necessidade e na possibilidade de centralizayao da coleta de

informacoes e no seu compartilhamento nao apenas entre as comerciantes de urn

mesmo segmento mas sim entre diversos ramos de atividade e com isso os

bancos de dados de proteyao ao eredito organizados tais como eonheeemos hoje

Ao eontrario do que se verifiea nos Estados Unidos e nos parses que

inlegram a Comunidade Europeia por exemplo cujos sistemas de eoneessao de

eredilo sao mais pautados na analise de informa90es positivas a eultura brasileira

para eoneessao de eredito desenvolveumiddotse sobretudo a partir da anota9ao da

analise e da cireula9aa de infarma90es de cunha negativ~ ou seja que retratam os

eompromissos assumidos e nao cumpridos pelos eadastrados

(httpwwwserasacombrguiadoacoes 2006)

20BJETIVO

o principal objetivo e contribuir com a reduyao da taxa de juros e aumento

nas vendas a erectito Com a reuniao de informacoes id6neas em bancos de dados

o mercado financeiro t8m uma das melhores alternativas para reduzir 0 risco de

inadimplencia Ou seja pessoas ffsicas e jurfdicas que possuam urn cadastre com

informacoes positivas devem ter 0 custo do emprestimo reduzido

Fai identificado este niche de mercado 0 qual e de suma importancia para a

economia nacional pais S8 refere a uma moderna conceP9ao de serviyo de

informacoes que e destinado a dinamizar 0 mercado de consumo Visa a

identifica9ao dos riscos inerentes ao processo de concessao de cnsectdito com 0

objetivo de validar as informacoes cadastrais para assegurar que 0 cliente tem 0

perfil de honrar seus compromissos financeiros

o concedente de credito analisa a pretensao do tomador com base nas

informayoes cadastrais fornecidas pela confirmayao eletr6nica de endereyo E uma

parte fundamental do cadastro positiv~ para facilitar a concessao do credito

Portanto a confirmay3o eletr6nica de endereyo assegura a validade de informayoes

e documentos id6neos pois 0 potencial credor pode vislumbrar um quadro completo

de dados e registros sobre 0 consumidor E uma ferramenta essencial e

complementar ao processo da analise e decisao de credito

A confirmayao eletr6nica de endereyo alem de contribuir para a melhoria do

sistema financeiro nacional beneficia 0 consumidor em virtude da maior seguranya

e estabilidade das operayoes de credito possibilitando a utilizayao das informayoes

10

inclusive para credito pre-aprovado sem nenhuma requisiyao formal pDr parte do

tomador potencial uma vez suas informa90es estao sempre atualizadas

II

3 JUSTIFICATIVAS

o baixo potencial de eredito de alguns pafses emergentes como par

exemplo 0 Brasil diz respeito a lenta reayao do sistema de crediario frente as

inova90es tecnol6gicas com a maior rapidez de compartilhamento de informacoes

sabre as tomadores

Hit estimativas que indicam que 0 cnsectdito voltado ao consume pode crescer

no Brasil Nos parses que tern urn controle eficiente das informayoes positivas de

bons pagadores que sao amplamente implementados e difundidos 0 erect ito chega

a ser tres vezes superior a media internacional Como exemplo pode-s8 citar a

Alemanha a qual possui urn dos mais completos e avancados cadastros positivQS

do mundo (httpwwwserasacombr 2006)

Todas as consideracoes acima demonstram a importancia da confirmayao

eletr6nica de endereyo Trata-se de uma tendencia mundial irreverslvel a ser

futuramente implementada no Brasil que se revela como instrumento de suma

importancia para 0 desenvolvimento econ6mico do Pais

Alem disso conferem as relayoes de credito muito mais velocidade menos

riscos mais seguranya uma vez que eliminam a circulayao de fichas cadastrais e

conseqDentemente barateiam custos

Porem para a correta e justa aferiyao da capaeidade de cada tomador de

eredito deve-se eonsiderar um universe maior composto nao apenas por

informayoes de inadimplemento mas tambem pelos compromissos assumidos e

pontualmente adimplidos pelo cadastrado

12

Oessa forma sera dado para concedente averiguar S8 eventual informayao

negativa e excepcional no historico de eredito do cadastrado au 58 e parte de urn

comportamento reiterado facultando-Ihe 0 calculo preciso e individualizado do Gusto

do capital

A confirmacao eletr6nica de endereyo e uma parte fundamental do cadastro

positivQ portanto rnais do que urn valor agregado aos servicos oferecidos pelos

bancos de dados de proteyao ao eredito constituindo-se em urn direito das pessoas

naturais e juridicas ter a sua capacidade de pagamento avaliada com precisao e

completude a tim de que sejam a elas aplicaveis as taxas de juros condizentes com

o risco das operacoes que contratarem

E cabe ressaltar que a experiencia de parses que utilizam esse sistema

prova que ele contribui consideravelmente para a reduyao dos juros e aumento das

vendas a credito

4 ESTUDO CONCEITUAL

Superadas estas quest6es e imperioso reconhecer a importancia da

confirmagao eletronica de enderego e documentos que e uma parte fundamental do

cadastre positiv~ bern como os procectimentos que devem nortear a sua criagao e

manutengao pelos bancos de dados de protegao ao erect ito posta que urn sistema

baseado em informagoes positivas vai incluir mais pessoas no contingente dos que

tern aces so ao erectito enquanto 0 sistema de informacoes negativas e excludente

o Brasil ja disp6e de le9i81a98oOque disciplina as atividades dos bancos de

dados e esta preste a estabelecer mecanismos mais especfficos para cadastramento

de informagoes de natureza positiva 0 ideal seria que essa regulamentayao fosse

contemplada em uma s6 lei considerando procedimentos que continuem

assegurando ao cadastrado 0 pleno exercfcio de seus direitos e ao banco de dados

a continuidade de suas atividades conferindo equilfbrio e harmonia entre eles na

justiga das taxas de juros cobradas no mercado brasileiro mas reduzidas para a

grande maio ria dos bons pagadores

A analise da participagao do credito no produto interne brute - PIB

demonstra que 0 percentual verificado nos parses desenvolvidos como por

exemplo nos Estados Unidos (655) na Italia (822) e na Alemanha (1123) esuperior aquele verificado no Brasil (278) - (dad os 2004 conforme FMI e Be) -

demonstrando que 0 progresso socioecon6mico do Pais esta atrelado ao fomento do

credito E Ifcito concluir que os Projetos de lei em tramite no Congresso Nacional ao

disporem favoravelmente aos cadastros positiv~s alem de facilitar as relagoes de

consum~ e de credito contribuirao para 0 desenvolvimento do Brasil

(httpwwwserasacombrserasalegaI35-set-04_m1htm 2006)

14

41 PRODUTOS A SEREM GERADOS PELO PROJETO

Construgao de urn portal de acesso na WEB permitindo somente 0 aces so

de associ ados cadastrados valid ados par senha e usuario Para validar os dados

cad astra is (nome endereyo telefones e documentos) 0 associ ado informara 0

telefone do cliente au urn documento do cliente Este portal tara a busca em urn

banco de dados e trarci todas as informagoes encontractas as quais 0 associado

confrontara com as fornecidas pelo cliente Cada busca ao banco de dados podera

ser contabilizada como uma forma de cobranya per quantidades de consultas

efetuadas pelo associado no usa do servigo de dados cadastrais

15

5 FUNDAMENTOS TEORICOS

o Rational Unified Process (tambem chamado de processo RUP) e um

processo de engenharia de software Tern uma abordagem baseada em disciplinas

para atribuir tarefas e responsabilidades dentro de uma organiza9ao de

desenvolvimento Sua meta e garantir a produgao de software de alta qualidade que

atenda as necessidades dos usuarios dentro de urn cronograma e de urn of9amento

previsiveis (httpwwwwthreexcomrup 2006)

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP

Disdplinas 111nlto II-E--bo--oa-ali~es-co~ns~f7rur-0~middotmiddot11TranSlcent~1

I~ Inlaquo 1 bmiddotIIEiObl~middotnJrMji~ nOl LnlJ~~~

Itera~oes

FONTE httpwwwwthreexcomrup

o RUP tern duas dimens6es

- eixo horizontal representa 0 tempo e mostra as aspectos do cicio de vida do

processo a medida que S8 desenvolve

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

LlSTA DE FIGURAS

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP 15FIGURA 02 - EIXO HORIZONTAL (FASES) 16FIGURA 03 - REPRESENTACAo 0 PLANEJAMENTO E 0 ESFORCO DEPROGRAMACAo 17FIGURA 04 - EIXO VERTICAL (PROCESSOS) 18FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE 19FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS 22FIGURA 07 - DIAGRAMA DE CONTEXTO 24FIGURA 08 - TI ATUALIZA BASE DE DADOS 25FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS 25FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS 25FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS 39FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

MFIGURA 13 - TELA DE ACESSO AO PORTAL CONFIRMACAO DEENDERECO 41FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS 62FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DEDADOS 67

LlSTA DE SIGLAS

BC - Banco Central

CD - Compact Disc

CEE - Confirmaao Eletronica de Endereos

CNPJ - Cadastro Nacional de Pessoas Juridicas

CPF - Cadastro de Pessoas Fisicas

DER - Diagrama Entidade Relacionamento

DFD - Diagrama de Fluxo de Dados

FMI - Fundo Monetario Internacional

HD - Hard Disk

HTML - HiperText Markup Language

MHz - MegaHertz

PIB - Produto Interne Bruto

PHP - HiperText Preprocessor (sigla recursiva)

RAM - Random Access Memory

RUP - Rational Unified Process

TI - Tecnologia da Informa9ao

WEB - Abreviatura para designar Word Wide Web (WWW)

WWW - Word Wide Web

SUMARIO

1 INTRODUltAO bullbull 82 OBJETIVO 93 JUSTIFICATIVAS 114 ESTUDO CONCEITUAL 1341 PRODUTOS A SEREM GERADOS PELO PROJETO 145 FUNDAMENTOS TEORICOS 1551 FASES DE PLANEJAMENTO 1752 PROCESSOS DE ENGENHARIA DE SOFTWARE 186 FERRAMENTAS PARA IMPLEMENTAltAO 217 METODOLOGIA DE DESENVOLVIMENTO 2371 ANALISE ESSENCIAL 2372 DECLARAtAO DOS OBJETIVOS DO SISTEMA 2373 LlSTA DE EVENTOS 2474 DIAGRAMA DE CONTEXTO 2475 DFD - DIAGRAMA DE FLUXO DE DADOS 258 TESTES 269 CONCLUSAO 2810 DESENVOLVIMENTOS FUTUROS 2911 MANUAL 30111INSTALAtAO 301111 Donwload dos Itens Necessarios 301112 InstalaltBodos Componentes Baixados 301113 ConfiguraltBo dos Componentes 311114 InstalaltBoda ConfirmaltBo Eletr6nica de Enderelto 341120PERAtAO 341121 Administrador do Acesso do Banco de Dados 341122 Usuario Associado para Consultar 0 Banco de Dados 35REFERENCIAS 3612 APENDICE 1 - DICIONARIO DO BANCO DE DADOS 3912 APENDICE 2 - TELAS E COOl GO FONTE 41

1 INTRODU9AO

A origem dos dados cadastrais remonta ao inicio do seculo XIX em parses

como as Estados Unidos 0 Canada a Alemanha e a Austria Surgiram da

necessidade de as comerciantes locais conhecerem 0 hist6rico de cnsectdito de seus

clientes para com ales realizarem negocios Inicialmante eram mantidos par

cooperativas ou associaroes sem fins lucrativQs a fim de compilar informayoes

idoneas que pudessem assistir as come reiantes locais de urn determinado

segmenta em suas decisoes de eredilo e de neg6cios

Mais tarde com a expansao dos mercados e a evoluyao tecnol6gica

surgiram na necessidade e na possibilidade de centralizayao da coleta de

informacoes e no seu compartilhamento nao apenas entre as comerciantes de urn

mesmo segmento mas sim entre diversos ramos de atividade e com isso os

bancos de dados de proteyao ao eredito organizados tais como eonheeemos hoje

Ao eontrario do que se verifiea nos Estados Unidos e nos parses que

inlegram a Comunidade Europeia por exemplo cujos sistemas de eoneessao de

eredilo sao mais pautados na analise de informa90es positivas a eultura brasileira

para eoneessao de eredito desenvolveumiddotse sobretudo a partir da anota9ao da

analise e da cireula9aa de infarma90es de cunha negativ~ ou seja que retratam os

eompromissos assumidos e nao cumpridos pelos eadastrados

(httpwwwserasacombrguiadoacoes 2006)

20BJETIVO

o principal objetivo e contribuir com a reduyao da taxa de juros e aumento

nas vendas a erectito Com a reuniao de informacoes id6neas em bancos de dados

o mercado financeiro t8m uma das melhores alternativas para reduzir 0 risco de

inadimplencia Ou seja pessoas ffsicas e jurfdicas que possuam urn cadastre com

informacoes positivas devem ter 0 custo do emprestimo reduzido

Fai identificado este niche de mercado 0 qual e de suma importancia para a

economia nacional pais S8 refere a uma moderna conceP9ao de serviyo de

informacoes que e destinado a dinamizar 0 mercado de consumo Visa a

identifica9ao dos riscos inerentes ao processo de concessao de cnsectdito com 0

objetivo de validar as informacoes cadastrais para assegurar que 0 cliente tem 0

perfil de honrar seus compromissos financeiros

o concedente de credito analisa a pretensao do tomador com base nas

informayoes cadastrais fornecidas pela confirmayao eletr6nica de endereyo E uma

parte fundamental do cadastro positiv~ para facilitar a concessao do credito

Portanto a confirmay3o eletr6nica de endereyo assegura a validade de informayoes

e documentos id6neos pois 0 potencial credor pode vislumbrar um quadro completo

de dados e registros sobre 0 consumidor E uma ferramenta essencial e

complementar ao processo da analise e decisao de credito

A confirmayao eletr6nica de endereyo alem de contribuir para a melhoria do

sistema financeiro nacional beneficia 0 consumidor em virtude da maior seguranya

e estabilidade das operayoes de credito possibilitando a utilizayao das informayoes

10

inclusive para credito pre-aprovado sem nenhuma requisiyao formal pDr parte do

tomador potencial uma vez suas informa90es estao sempre atualizadas

II

3 JUSTIFICATIVAS

o baixo potencial de eredito de alguns pafses emergentes como par

exemplo 0 Brasil diz respeito a lenta reayao do sistema de crediario frente as

inova90es tecnol6gicas com a maior rapidez de compartilhamento de informacoes

sabre as tomadores

Hit estimativas que indicam que 0 cnsectdito voltado ao consume pode crescer

no Brasil Nos parses que tern urn controle eficiente das informayoes positivas de

bons pagadores que sao amplamente implementados e difundidos 0 erect ito chega

a ser tres vezes superior a media internacional Como exemplo pode-s8 citar a

Alemanha a qual possui urn dos mais completos e avancados cadastros positivQS

do mundo (httpwwwserasacombr 2006)

Todas as consideracoes acima demonstram a importancia da confirmayao

eletr6nica de endereyo Trata-se de uma tendencia mundial irreverslvel a ser

futuramente implementada no Brasil que se revela como instrumento de suma

importancia para 0 desenvolvimento econ6mico do Pais

Alem disso conferem as relayoes de credito muito mais velocidade menos

riscos mais seguranya uma vez que eliminam a circulayao de fichas cadastrais e

conseqDentemente barateiam custos

Porem para a correta e justa aferiyao da capaeidade de cada tomador de

eredito deve-se eonsiderar um universe maior composto nao apenas por

informayoes de inadimplemento mas tambem pelos compromissos assumidos e

pontualmente adimplidos pelo cadastrado

12

Oessa forma sera dado para concedente averiguar S8 eventual informayao

negativa e excepcional no historico de eredito do cadastrado au 58 e parte de urn

comportamento reiterado facultando-Ihe 0 calculo preciso e individualizado do Gusto

do capital

A confirmacao eletr6nica de endereyo e uma parte fundamental do cadastro

positivQ portanto rnais do que urn valor agregado aos servicos oferecidos pelos

bancos de dados de proteyao ao eredito constituindo-se em urn direito das pessoas

naturais e juridicas ter a sua capacidade de pagamento avaliada com precisao e

completude a tim de que sejam a elas aplicaveis as taxas de juros condizentes com

o risco das operacoes que contratarem

E cabe ressaltar que a experiencia de parses que utilizam esse sistema

prova que ele contribui consideravelmente para a reduyao dos juros e aumento das

vendas a credito

4 ESTUDO CONCEITUAL

Superadas estas quest6es e imperioso reconhecer a importancia da

confirmagao eletronica de enderego e documentos que e uma parte fundamental do

cadastre positiv~ bern como os procectimentos que devem nortear a sua criagao e

manutengao pelos bancos de dados de protegao ao erect ito posta que urn sistema

baseado em informagoes positivas vai incluir mais pessoas no contingente dos que

tern aces so ao erectito enquanto 0 sistema de informacoes negativas e excludente

o Brasil ja disp6e de le9i81a98oOque disciplina as atividades dos bancos de

dados e esta preste a estabelecer mecanismos mais especfficos para cadastramento

de informagoes de natureza positiva 0 ideal seria que essa regulamentayao fosse

contemplada em uma s6 lei considerando procedimentos que continuem

assegurando ao cadastrado 0 pleno exercfcio de seus direitos e ao banco de dados

a continuidade de suas atividades conferindo equilfbrio e harmonia entre eles na

justiga das taxas de juros cobradas no mercado brasileiro mas reduzidas para a

grande maio ria dos bons pagadores

A analise da participagao do credito no produto interne brute - PIB

demonstra que 0 percentual verificado nos parses desenvolvidos como por

exemplo nos Estados Unidos (655) na Italia (822) e na Alemanha (1123) esuperior aquele verificado no Brasil (278) - (dad os 2004 conforme FMI e Be) -

demonstrando que 0 progresso socioecon6mico do Pais esta atrelado ao fomento do

credito E Ifcito concluir que os Projetos de lei em tramite no Congresso Nacional ao

disporem favoravelmente aos cadastros positiv~s alem de facilitar as relagoes de

consum~ e de credito contribuirao para 0 desenvolvimento do Brasil

(httpwwwserasacombrserasalegaI35-set-04_m1htm 2006)

14

41 PRODUTOS A SEREM GERADOS PELO PROJETO

Construgao de urn portal de acesso na WEB permitindo somente 0 aces so

de associ ados cadastrados valid ados par senha e usuario Para validar os dados

cad astra is (nome endereyo telefones e documentos) 0 associ ado informara 0

telefone do cliente au urn documento do cliente Este portal tara a busca em urn

banco de dados e trarci todas as informagoes encontractas as quais 0 associado

confrontara com as fornecidas pelo cliente Cada busca ao banco de dados podera

ser contabilizada como uma forma de cobranya per quantidades de consultas

efetuadas pelo associado no usa do servigo de dados cadastrais

15

5 FUNDAMENTOS TEORICOS

o Rational Unified Process (tambem chamado de processo RUP) e um

processo de engenharia de software Tern uma abordagem baseada em disciplinas

para atribuir tarefas e responsabilidades dentro de uma organiza9ao de

desenvolvimento Sua meta e garantir a produgao de software de alta qualidade que

atenda as necessidades dos usuarios dentro de urn cronograma e de urn of9amento

previsiveis (httpwwwwthreexcomrup 2006)

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP

Disdplinas 111nlto II-E--bo--oa-ali~es-co~ns~f7rur-0~middotmiddot11TranSlcent~1

I~ Inlaquo 1 bmiddotIIEiObl~middotnJrMji~ nOl LnlJ~~~

Itera~oes

FONTE httpwwwwthreexcomrup

o RUP tern duas dimens6es

- eixo horizontal representa 0 tempo e mostra as aspectos do cicio de vida do

processo a medida que S8 desenvolve

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

LlSTA DE SIGLAS

BC - Banco Central

CD - Compact Disc

CEE - Confirmaao Eletronica de Endereos

CNPJ - Cadastro Nacional de Pessoas Juridicas

CPF - Cadastro de Pessoas Fisicas

DER - Diagrama Entidade Relacionamento

DFD - Diagrama de Fluxo de Dados

FMI - Fundo Monetario Internacional

HD - Hard Disk

HTML - HiperText Markup Language

MHz - MegaHertz

PIB - Produto Interne Bruto

PHP - HiperText Preprocessor (sigla recursiva)

RAM - Random Access Memory

RUP - Rational Unified Process

TI - Tecnologia da Informa9ao

WEB - Abreviatura para designar Word Wide Web (WWW)

WWW - Word Wide Web

SUMARIO

1 INTRODUltAO bullbull 82 OBJETIVO 93 JUSTIFICATIVAS 114 ESTUDO CONCEITUAL 1341 PRODUTOS A SEREM GERADOS PELO PROJETO 145 FUNDAMENTOS TEORICOS 1551 FASES DE PLANEJAMENTO 1752 PROCESSOS DE ENGENHARIA DE SOFTWARE 186 FERRAMENTAS PARA IMPLEMENTAltAO 217 METODOLOGIA DE DESENVOLVIMENTO 2371 ANALISE ESSENCIAL 2372 DECLARAtAO DOS OBJETIVOS DO SISTEMA 2373 LlSTA DE EVENTOS 2474 DIAGRAMA DE CONTEXTO 2475 DFD - DIAGRAMA DE FLUXO DE DADOS 258 TESTES 269 CONCLUSAO 2810 DESENVOLVIMENTOS FUTUROS 2911 MANUAL 30111INSTALAtAO 301111 Donwload dos Itens Necessarios 301112 InstalaltBodos Componentes Baixados 301113 ConfiguraltBo dos Componentes 311114 InstalaltBoda ConfirmaltBo Eletr6nica de Enderelto 341120PERAtAO 341121 Administrador do Acesso do Banco de Dados 341122 Usuario Associado para Consultar 0 Banco de Dados 35REFERENCIAS 3612 APENDICE 1 - DICIONARIO DO BANCO DE DADOS 3912 APENDICE 2 - TELAS E COOl GO FONTE 41

1 INTRODU9AO

A origem dos dados cadastrais remonta ao inicio do seculo XIX em parses

como as Estados Unidos 0 Canada a Alemanha e a Austria Surgiram da

necessidade de as comerciantes locais conhecerem 0 hist6rico de cnsectdito de seus

clientes para com ales realizarem negocios Inicialmante eram mantidos par

cooperativas ou associaroes sem fins lucrativQs a fim de compilar informayoes

idoneas que pudessem assistir as come reiantes locais de urn determinado

segmenta em suas decisoes de eredilo e de neg6cios

Mais tarde com a expansao dos mercados e a evoluyao tecnol6gica

surgiram na necessidade e na possibilidade de centralizayao da coleta de

informacoes e no seu compartilhamento nao apenas entre as comerciantes de urn

mesmo segmento mas sim entre diversos ramos de atividade e com isso os

bancos de dados de proteyao ao eredito organizados tais como eonheeemos hoje

Ao eontrario do que se verifiea nos Estados Unidos e nos parses que

inlegram a Comunidade Europeia por exemplo cujos sistemas de eoneessao de

eredilo sao mais pautados na analise de informa90es positivas a eultura brasileira

para eoneessao de eredito desenvolveumiddotse sobretudo a partir da anota9ao da

analise e da cireula9aa de infarma90es de cunha negativ~ ou seja que retratam os

eompromissos assumidos e nao cumpridos pelos eadastrados

(httpwwwserasacombrguiadoacoes 2006)

20BJETIVO

o principal objetivo e contribuir com a reduyao da taxa de juros e aumento

nas vendas a erectito Com a reuniao de informacoes id6neas em bancos de dados

o mercado financeiro t8m uma das melhores alternativas para reduzir 0 risco de

inadimplencia Ou seja pessoas ffsicas e jurfdicas que possuam urn cadastre com

informacoes positivas devem ter 0 custo do emprestimo reduzido

Fai identificado este niche de mercado 0 qual e de suma importancia para a

economia nacional pais S8 refere a uma moderna conceP9ao de serviyo de

informacoes que e destinado a dinamizar 0 mercado de consumo Visa a

identifica9ao dos riscos inerentes ao processo de concessao de cnsectdito com 0

objetivo de validar as informacoes cadastrais para assegurar que 0 cliente tem 0

perfil de honrar seus compromissos financeiros

o concedente de credito analisa a pretensao do tomador com base nas

informayoes cadastrais fornecidas pela confirmayao eletr6nica de endereyo E uma

parte fundamental do cadastro positiv~ para facilitar a concessao do credito

Portanto a confirmay3o eletr6nica de endereyo assegura a validade de informayoes

e documentos id6neos pois 0 potencial credor pode vislumbrar um quadro completo

de dados e registros sobre 0 consumidor E uma ferramenta essencial e

complementar ao processo da analise e decisao de credito

A confirmayao eletr6nica de endereyo alem de contribuir para a melhoria do

sistema financeiro nacional beneficia 0 consumidor em virtude da maior seguranya

e estabilidade das operayoes de credito possibilitando a utilizayao das informayoes

10

inclusive para credito pre-aprovado sem nenhuma requisiyao formal pDr parte do

tomador potencial uma vez suas informa90es estao sempre atualizadas

II

3 JUSTIFICATIVAS

o baixo potencial de eredito de alguns pafses emergentes como par

exemplo 0 Brasil diz respeito a lenta reayao do sistema de crediario frente as

inova90es tecnol6gicas com a maior rapidez de compartilhamento de informacoes

sabre as tomadores

Hit estimativas que indicam que 0 cnsectdito voltado ao consume pode crescer

no Brasil Nos parses que tern urn controle eficiente das informayoes positivas de

bons pagadores que sao amplamente implementados e difundidos 0 erect ito chega

a ser tres vezes superior a media internacional Como exemplo pode-s8 citar a

Alemanha a qual possui urn dos mais completos e avancados cadastros positivQS

do mundo (httpwwwserasacombr 2006)

Todas as consideracoes acima demonstram a importancia da confirmayao

eletr6nica de endereyo Trata-se de uma tendencia mundial irreverslvel a ser

futuramente implementada no Brasil que se revela como instrumento de suma

importancia para 0 desenvolvimento econ6mico do Pais

Alem disso conferem as relayoes de credito muito mais velocidade menos

riscos mais seguranya uma vez que eliminam a circulayao de fichas cadastrais e

conseqDentemente barateiam custos

Porem para a correta e justa aferiyao da capaeidade de cada tomador de

eredito deve-se eonsiderar um universe maior composto nao apenas por

informayoes de inadimplemento mas tambem pelos compromissos assumidos e

pontualmente adimplidos pelo cadastrado

12

Oessa forma sera dado para concedente averiguar S8 eventual informayao

negativa e excepcional no historico de eredito do cadastrado au 58 e parte de urn

comportamento reiterado facultando-Ihe 0 calculo preciso e individualizado do Gusto

do capital

A confirmacao eletr6nica de endereyo e uma parte fundamental do cadastro

positivQ portanto rnais do que urn valor agregado aos servicos oferecidos pelos

bancos de dados de proteyao ao eredito constituindo-se em urn direito das pessoas

naturais e juridicas ter a sua capacidade de pagamento avaliada com precisao e

completude a tim de que sejam a elas aplicaveis as taxas de juros condizentes com

o risco das operacoes que contratarem

E cabe ressaltar que a experiencia de parses que utilizam esse sistema

prova que ele contribui consideravelmente para a reduyao dos juros e aumento das

vendas a credito

4 ESTUDO CONCEITUAL

Superadas estas quest6es e imperioso reconhecer a importancia da

confirmagao eletronica de enderego e documentos que e uma parte fundamental do

cadastre positiv~ bern como os procectimentos que devem nortear a sua criagao e

manutengao pelos bancos de dados de protegao ao erect ito posta que urn sistema

baseado em informagoes positivas vai incluir mais pessoas no contingente dos que

tern aces so ao erectito enquanto 0 sistema de informacoes negativas e excludente

o Brasil ja disp6e de le9i81a98oOque disciplina as atividades dos bancos de

dados e esta preste a estabelecer mecanismos mais especfficos para cadastramento

de informagoes de natureza positiva 0 ideal seria que essa regulamentayao fosse

contemplada em uma s6 lei considerando procedimentos que continuem

assegurando ao cadastrado 0 pleno exercfcio de seus direitos e ao banco de dados

a continuidade de suas atividades conferindo equilfbrio e harmonia entre eles na

justiga das taxas de juros cobradas no mercado brasileiro mas reduzidas para a

grande maio ria dos bons pagadores

A analise da participagao do credito no produto interne brute - PIB

demonstra que 0 percentual verificado nos parses desenvolvidos como por

exemplo nos Estados Unidos (655) na Italia (822) e na Alemanha (1123) esuperior aquele verificado no Brasil (278) - (dad os 2004 conforme FMI e Be) -

demonstrando que 0 progresso socioecon6mico do Pais esta atrelado ao fomento do

credito E Ifcito concluir que os Projetos de lei em tramite no Congresso Nacional ao

disporem favoravelmente aos cadastros positiv~s alem de facilitar as relagoes de

consum~ e de credito contribuirao para 0 desenvolvimento do Brasil

(httpwwwserasacombrserasalegaI35-set-04_m1htm 2006)

14

41 PRODUTOS A SEREM GERADOS PELO PROJETO

Construgao de urn portal de acesso na WEB permitindo somente 0 aces so

de associ ados cadastrados valid ados par senha e usuario Para validar os dados

cad astra is (nome endereyo telefones e documentos) 0 associ ado informara 0

telefone do cliente au urn documento do cliente Este portal tara a busca em urn

banco de dados e trarci todas as informagoes encontractas as quais 0 associado

confrontara com as fornecidas pelo cliente Cada busca ao banco de dados podera

ser contabilizada como uma forma de cobranya per quantidades de consultas

efetuadas pelo associado no usa do servigo de dados cadastrais

15

5 FUNDAMENTOS TEORICOS

o Rational Unified Process (tambem chamado de processo RUP) e um

processo de engenharia de software Tern uma abordagem baseada em disciplinas

para atribuir tarefas e responsabilidades dentro de uma organiza9ao de

desenvolvimento Sua meta e garantir a produgao de software de alta qualidade que

atenda as necessidades dos usuarios dentro de urn cronograma e de urn of9amento

previsiveis (httpwwwwthreexcomrup 2006)

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP

Disdplinas 111nlto II-E--bo--oa-ali~es-co~ns~f7rur-0~middotmiddot11TranSlcent~1

I~ Inlaquo 1 bmiddotIIEiObl~middotnJrMji~ nOl LnlJ~~~

Itera~oes

FONTE httpwwwwthreexcomrup

o RUP tern duas dimens6es

- eixo horizontal representa 0 tempo e mostra as aspectos do cicio de vida do

processo a medida que S8 desenvolve

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

SUMARIO

1 INTRODUltAO bullbull 82 OBJETIVO 93 JUSTIFICATIVAS 114 ESTUDO CONCEITUAL 1341 PRODUTOS A SEREM GERADOS PELO PROJETO 145 FUNDAMENTOS TEORICOS 1551 FASES DE PLANEJAMENTO 1752 PROCESSOS DE ENGENHARIA DE SOFTWARE 186 FERRAMENTAS PARA IMPLEMENTAltAO 217 METODOLOGIA DE DESENVOLVIMENTO 2371 ANALISE ESSENCIAL 2372 DECLARAtAO DOS OBJETIVOS DO SISTEMA 2373 LlSTA DE EVENTOS 2474 DIAGRAMA DE CONTEXTO 2475 DFD - DIAGRAMA DE FLUXO DE DADOS 258 TESTES 269 CONCLUSAO 2810 DESENVOLVIMENTOS FUTUROS 2911 MANUAL 30111INSTALAtAO 301111 Donwload dos Itens Necessarios 301112 InstalaltBodos Componentes Baixados 301113 ConfiguraltBo dos Componentes 311114 InstalaltBoda ConfirmaltBo Eletr6nica de Enderelto 341120PERAtAO 341121 Administrador do Acesso do Banco de Dados 341122 Usuario Associado para Consultar 0 Banco de Dados 35REFERENCIAS 3612 APENDICE 1 - DICIONARIO DO BANCO DE DADOS 3912 APENDICE 2 - TELAS E COOl GO FONTE 41

1 INTRODU9AO

A origem dos dados cadastrais remonta ao inicio do seculo XIX em parses

como as Estados Unidos 0 Canada a Alemanha e a Austria Surgiram da

necessidade de as comerciantes locais conhecerem 0 hist6rico de cnsectdito de seus

clientes para com ales realizarem negocios Inicialmante eram mantidos par

cooperativas ou associaroes sem fins lucrativQs a fim de compilar informayoes

idoneas que pudessem assistir as come reiantes locais de urn determinado

segmenta em suas decisoes de eredilo e de neg6cios

Mais tarde com a expansao dos mercados e a evoluyao tecnol6gica

surgiram na necessidade e na possibilidade de centralizayao da coleta de

informacoes e no seu compartilhamento nao apenas entre as comerciantes de urn

mesmo segmento mas sim entre diversos ramos de atividade e com isso os

bancos de dados de proteyao ao eredito organizados tais como eonheeemos hoje

Ao eontrario do que se verifiea nos Estados Unidos e nos parses que

inlegram a Comunidade Europeia por exemplo cujos sistemas de eoneessao de

eredilo sao mais pautados na analise de informa90es positivas a eultura brasileira

para eoneessao de eredito desenvolveumiddotse sobretudo a partir da anota9ao da

analise e da cireula9aa de infarma90es de cunha negativ~ ou seja que retratam os

eompromissos assumidos e nao cumpridos pelos eadastrados

(httpwwwserasacombrguiadoacoes 2006)

20BJETIVO

o principal objetivo e contribuir com a reduyao da taxa de juros e aumento

nas vendas a erectito Com a reuniao de informacoes id6neas em bancos de dados

o mercado financeiro t8m uma das melhores alternativas para reduzir 0 risco de

inadimplencia Ou seja pessoas ffsicas e jurfdicas que possuam urn cadastre com

informacoes positivas devem ter 0 custo do emprestimo reduzido

Fai identificado este niche de mercado 0 qual e de suma importancia para a

economia nacional pais S8 refere a uma moderna conceP9ao de serviyo de

informacoes que e destinado a dinamizar 0 mercado de consumo Visa a

identifica9ao dos riscos inerentes ao processo de concessao de cnsectdito com 0

objetivo de validar as informacoes cadastrais para assegurar que 0 cliente tem 0

perfil de honrar seus compromissos financeiros

o concedente de credito analisa a pretensao do tomador com base nas

informayoes cadastrais fornecidas pela confirmayao eletr6nica de endereyo E uma

parte fundamental do cadastro positiv~ para facilitar a concessao do credito

Portanto a confirmay3o eletr6nica de endereyo assegura a validade de informayoes

e documentos id6neos pois 0 potencial credor pode vislumbrar um quadro completo

de dados e registros sobre 0 consumidor E uma ferramenta essencial e

complementar ao processo da analise e decisao de credito

A confirmayao eletr6nica de endereyo alem de contribuir para a melhoria do

sistema financeiro nacional beneficia 0 consumidor em virtude da maior seguranya

e estabilidade das operayoes de credito possibilitando a utilizayao das informayoes

10

inclusive para credito pre-aprovado sem nenhuma requisiyao formal pDr parte do

tomador potencial uma vez suas informa90es estao sempre atualizadas

II

3 JUSTIFICATIVAS

o baixo potencial de eredito de alguns pafses emergentes como par

exemplo 0 Brasil diz respeito a lenta reayao do sistema de crediario frente as

inova90es tecnol6gicas com a maior rapidez de compartilhamento de informacoes

sabre as tomadores

Hit estimativas que indicam que 0 cnsectdito voltado ao consume pode crescer

no Brasil Nos parses que tern urn controle eficiente das informayoes positivas de

bons pagadores que sao amplamente implementados e difundidos 0 erect ito chega

a ser tres vezes superior a media internacional Como exemplo pode-s8 citar a

Alemanha a qual possui urn dos mais completos e avancados cadastros positivQS

do mundo (httpwwwserasacombr 2006)

Todas as consideracoes acima demonstram a importancia da confirmayao

eletr6nica de endereyo Trata-se de uma tendencia mundial irreverslvel a ser

futuramente implementada no Brasil que se revela como instrumento de suma

importancia para 0 desenvolvimento econ6mico do Pais

Alem disso conferem as relayoes de credito muito mais velocidade menos

riscos mais seguranya uma vez que eliminam a circulayao de fichas cadastrais e

conseqDentemente barateiam custos

Porem para a correta e justa aferiyao da capaeidade de cada tomador de

eredito deve-se eonsiderar um universe maior composto nao apenas por

informayoes de inadimplemento mas tambem pelos compromissos assumidos e

pontualmente adimplidos pelo cadastrado

12

Oessa forma sera dado para concedente averiguar S8 eventual informayao

negativa e excepcional no historico de eredito do cadastrado au 58 e parte de urn

comportamento reiterado facultando-Ihe 0 calculo preciso e individualizado do Gusto

do capital

A confirmacao eletr6nica de endereyo e uma parte fundamental do cadastro

positivQ portanto rnais do que urn valor agregado aos servicos oferecidos pelos

bancos de dados de proteyao ao eredito constituindo-se em urn direito das pessoas

naturais e juridicas ter a sua capacidade de pagamento avaliada com precisao e

completude a tim de que sejam a elas aplicaveis as taxas de juros condizentes com

o risco das operacoes que contratarem

E cabe ressaltar que a experiencia de parses que utilizam esse sistema

prova que ele contribui consideravelmente para a reduyao dos juros e aumento das

vendas a credito

4 ESTUDO CONCEITUAL

Superadas estas quest6es e imperioso reconhecer a importancia da

confirmagao eletronica de enderego e documentos que e uma parte fundamental do

cadastre positiv~ bern como os procectimentos que devem nortear a sua criagao e

manutengao pelos bancos de dados de protegao ao erect ito posta que urn sistema

baseado em informagoes positivas vai incluir mais pessoas no contingente dos que

tern aces so ao erectito enquanto 0 sistema de informacoes negativas e excludente

o Brasil ja disp6e de le9i81a98oOque disciplina as atividades dos bancos de

dados e esta preste a estabelecer mecanismos mais especfficos para cadastramento

de informagoes de natureza positiva 0 ideal seria que essa regulamentayao fosse

contemplada em uma s6 lei considerando procedimentos que continuem

assegurando ao cadastrado 0 pleno exercfcio de seus direitos e ao banco de dados

a continuidade de suas atividades conferindo equilfbrio e harmonia entre eles na

justiga das taxas de juros cobradas no mercado brasileiro mas reduzidas para a

grande maio ria dos bons pagadores

A analise da participagao do credito no produto interne brute - PIB

demonstra que 0 percentual verificado nos parses desenvolvidos como por

exemplo nos Estados Unidos (655) na Italia (822) e na Alemanha (1123) esuperior aquele verificado no Brasil (278) - (dad os 2004 conforme FMI e Be) -

demonstrando que 0 progresso socioecon6mico do Pais esta atrelado ao fomento do

credito E Ifcito concluir que os Projetos de lei em tramite no Congresso Nacional ao

disporem favoravelmente aos cadastros positiv~s alem de facilitar as relagoes de

consum~ e de credito contribuirao para 0 desenvolvimento do Brasil

(httpwwwserasacombrserasalegaI35-set-04_m1htm 2006)

14

41 PRODUTOS A SEREM GERADOS PELO PROJETO

Construgao de urn portal de acesso na WEB permitindo somente 0 aces so

de associ ados cadastrados valid ados par senha e usuario Para validar os dados

cad astra is (nome endereyo telefones e documentos) 0 associ ado informara 0

telefone do cliente au urn documento do cliente Este portal tara a busca em urn

banco de dados e trarci todas as informagoes encontractas as quais 0 associado

confrontara com as fornecidas pelo cliente Cada busca ao banco de dados podera

ser contabilizada como uma forma de cobranya per quantidades de consultas

efetuadas pelo associado no usa do servigo de dados cadastrais

15

5 FUNDAMENTOS TEORICOS

o Rational Unified Process (tambem chamado de processo RUP) e um

processo de engenharia de software Tern uma abordagem baseada em disciplinas

para atribuir tarefas e responsabilidades dentro de uma organiza9ao de

desenvolvimento Sua meta e garantir a produgao de software de alta qualidade que

atenda as necessidades dos usuarios dentro de urn cronograma e de urn of9amento

previsiveis (httpwwwwthreexcomrup 2006)

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP

Disdplinas 111nlto II-E--bo--oa-ali~es-co~ns~f7rur-0~middotmiddot11TranSlcent~1

I~ Inlaquo 1 bmiddotIIEiObl~middotnJrMji~ nOl LnlJ~~~

Itera~oes

FONTE httpwwwwthreexcomrup

o RUP tern duas dimens6es

- eixo horizontal representa 0 tempo e mostra as aspectos do cicio de vida do

processo a medida que S8 desenvolve

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

1 INTRODU9AO

A origem dos dados cadastrais remonta ao inicio do seculo XIX em parses

como as Estados Unidos 0 Canada a Alemanha e a Austria Surgiram da

necessidade de as comerciantes locais conhecerem 0 hist6rico de cnsectdito de seus

clientes para com ales realizarem negocios Inicialmante eram mantidos par

cooperativas ou associaroes sem fins lucrativQs a fim de compilar informayoes

idoneas que pudessem assistir as come reiantes locais de urn determinado

segmenta em suas decisoes de eredilo e de neg6cios

Mais tarde com a expansao dos mercados e a evoluyao tecnol6gica

surgiram na necessidade e na possibilidade de centralizayao da coleta de

informacoes e no seu compartilhamento nao apenas entre as comerciantes de urn

mesmo segmento mas sim entre diversos ramos de atividade e com isso os

bancos de dados de proteyao ao eredito organizados tais como eonheeemos hoje

Ao eontrario do que se verifiea nos Estados Unidos e nos parses que

inlegram a Comunidade Europeia por exemplo cujos sistemas de eoneessao de

eredilo sao mais pautados na analise de informa90es positivas a eultura brasileira

para eoneessao de eredito desenvolveumiddotse sobretudo a partir da anota9ao da

analise e da cireula9aa de infarma90es de cunha negativ~ ou seja que retratam os

eompromissos assumidos e nao cumpridos pelos eadastrados

(httpwwwserasacombrguiadoacoes 2006)

20BJETIVO

o principal objetivo e contribuir com a reduyao da taxa de juros e aumento

nas vendas a erectito Com a reuniao de informacoes id6neas em bancos de dados

o mercado financeiro t8m uma das melhores alternativas para reduzir 0 risco de

inadimplencia Ou seja pessoas ffsicas e jurfdicas que possuam urn cadastre com

informacoes positivas devem ter 0 custo do emprestimo reduzido

Fai identificado este niche de mercado 0 qual e de suma importancia para a

economia nacional pais S8 refere a uma moderna conceP9ao de serviyo de

informacoes que e destinado a dinamizar 0 mercado de consumo Visa a

identifica9ao dos riscos inerentes ao processo de concessao de cnsectdito com 0

objetivo de validar as informacoes cadastrais para assegurar que 0 cliente tem 0

perfil de honrar seus compromissos financeiros

o concedente de credito analisa a pretensao do tomador com base nas

informayoes cadastrais fornecidas pela confirmayao eletr6nica de endereyo E uma

parte fundamental do cadastro positiv~ para facilitar a concessao do credito

Portanto a confirmay3o eletr6nica de endereyo assegura a validade de informayoes

e documentos id6neos pois 0 potencial credor pode vislumbrar um quadro completo

de dados e registros sobre 0 consumidor E uma ferramenta essencial e

complementar ao processo da analise e decisao de credito

A confirmayao eletr6nica de endereyo alem de contribuir para a melhoria do

sistema financeiro nacional beneficia 0 consumidor em virtude da maior seguranya

e estabilidade das operayoes de credito possibilitando a utilizayao das informayoes

10

inclusive para credito pre-aprovado sem nenhuma requisiyao formal pDr parte do

tomador potencial uma vez suas informa90es estao sempre atualizadas

II

3 JUSTIFICATIVAS

o baixo potencial de eredito de alguns pafses emergentes como par

exemplo 0 Brasil diz respeito a lenta reayao do sistema de crediario frente as

inova90es tecnol6gicas com a maior rapidez de compartilhamento de informacoes

sabre as tomadores

Hit estimativas que indicam que 0 cnsectdito voltado ao consume pode crescer

no Brasil Nos parses que tern urn controle eficiente das informayoes positivas de

bons pagadores que sao amplamente implementados e difundidos 0 erect ito chega

a ser tres vezes superior a media internacional Como exemplo pode-s8 citar a

Alemanha a qual possui urn dos mais completos e avancados cadastros positivQS

do mundo (httpwwwserasacombr 2006)

Todas as consideracoes acima demonstram a importancia da confirmayao

eletr6nica de endereyo Trata-se de uma tendencia mundial irreverslvel a ser

futuramente implementada no Brasil que se revela como instrumento de suma

importancia para 0 desenvolvimento econ6mico do Pais

Alem disso conferem as relayoes de credito muito mais velocidade menos

riscos mais seguranya uma vez que eliminam a circulayao de fichas cadastrais e

conseqDentemente barateiam custos

Porem para a correta e justa aferiyao da capaeidade de cada tomador de

eredito deve-se eonsiderar um universe maior composto nao apenas por

informayoes de inadimplemento mas tambem pelos compromissos assumidos e

pontualmente adimplidos pelo cadastrado

12

Oessa forma sera dado para concedente averiguar S8 eventual informayao

negativa e excepcional no historico de eredito do cadastrado au 58 e parte de urn

comportamento reiterado facultando-Ihe 0 calculo preciso e individualizado do Gusto

do capital

A confirmacao eletr6nica de endereyo e uma parte fundamental do cadastro

positivQ portanto rnais do que urn valor agregado aos servicos oferecidos pelos

bancos de dados de proteyao ao eredito constituindo-se em urn direito das pessoas

naturais e juridicas ter a sua capacidade de pagamento avaliada com precisao e

completude a tim de que sejam a elas aplicaveis as taxas de juros condizentes com

o risco das operacoes que contratarem

E cabe ressaltar que a experiencia de parses que utilizam esse sistema

prova que ele contribui consideravelmente para a reduyao dos juros e aumento das

vendas a credito

4 ESTUDO CONCEITUAL

Superadas estas quest6es e imperioso reconhecer a importancia da

confirmagao eletronica de enderego e documentos que e uma parte fundamental do

cadastre positiv~ bern como os procectimentos que devem nortear a sua criagao e

manutengao pelos bancos de dados de protegao ao erect ito posta que urn sistema

baseado em informagoes positivas vai incluir mais pessoas no contingente dos que

tern aces so ao erectito enquanto 0 sistema de informacoes negativas e excludente

o Brasil ja disp6e de le9i81a98oOque disciplina as atividades dos bancos de

dados e esta preste a estabelecer mecanismos mais especfficos para cadastramento

de informagoes de natureza positiva 0 ideal seria que essa regulamentayao fosse

contemplada em uma s6 lei considerando procedimentos que continuem

assegurando ao cadastrado 0 pleno exercfcio de seus direitos e ao banco de dados

a continuidade de suas atividades conferindo equilfbrio e harmonia entre eles na

justiga das taxas de juros cobradas no mercado brasileiro mas reduzidas para a

grande maio ria dos bons pagadores

A analise da participagao do credito no produto interne brute - PIB

demonstra que 0 percentual verificado nos parses desenvolvidos como por

exemplo nos Estados Unidos (655) na Italia (822) e na Alemanha (1123) esuperior aquele verificado no Brasil (278) - (dad os 2004 conforme FMI e Be) -

demonstrando que 0 progresso socioecon6mico do Pais esta atrelado ao fomento do

credito E Ifcito concluir que os Projetos de lei em tramite no Congresso Nacional ao

disporem favoravelmente aos cadastros positiv~s alem de facilitar as relagoes de

consum~ e de credito contribuirao para 0 desenvolvimento do Brasil

(httpwwwserasacombrserasalegaI35-set-04_m1htm 2006)

14

41 PRODUTOS A SEREM GERADOS PELO PROJETO

Construgao de urn portal de acesso na WEB permitindo somente 0 aces so

de associ ados cadastrados valid ados par senha e usuario Para validar os dados

cad astra is (nome endereyo telefones e documentos) 0 associ ado informara 0

telefone do cliente au urn documento do cliente Este portal tara a busca em urn

banco de dados e trarci todas as informagoes encontractas as quais 0 associado

confrontara com as fornecidas pelo cliente Cada busca ao banco de dados podera

ser contabilizada como uma forma de cobranya per quantidades de consultas

efetuadas pelo associado no usa do servigo de dados cadastrais

15

5 FUNDAMENTOS TEORICOS

o Rational Unified Process (tambem chamado de processo RUP) e um

processo de engenharia de software Tern uma abordagem baseada em disciplinas

para atribuir tarefas e responsabilidades dentro de uma organiza9ao de

desenvolvimento Sua meta e garantir a produgao de software de alta qualidade que

atenda as necessidades dos usuarios dentro de urn cronograma e de urn of9amento

previsiveis (httpwwwwthreexcomrup 2006)

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP

Disdplinas 111nlto II-E--bo--oa-ali~es-co~ns~f7rur-0~middotmiddot11TranSlcent~1

I~ Inlaquo 1 bmiddotIIEiObl~middotnJrMji~ nOl LnlJ~~~

Itera~oes

FONTE httpwwwwthreexcomrup

o RUP tern duas dimens6es

- eixo horizontal representa 0 tempo e mostra as aspectos do cicio de vida do

processo a medida que S8 desenvolve

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

20BJETIVO

o principal objetivo e contribuir com a reduyao da taxa de juros e aumento

nas vendas a erectito Com a reuniao de informacoes id6neas em bancos de dados

o mercado financeiro t8m uma das melhores alternativas para reduzir 0 risco de

inadimplencia Ou seja pessoas ffsicas e jurfdicas que possuam urn cadastre com

informacoes positivas devem ter 0 custo do emprestimo reduzido

Fai identificado este niche de mercado 0 qual e de suma importancia para a

economia nacional pais S8 refere a uma moderna conceP9ao de serviyo de

informacoes que e destinado a dinamizar 0 mercado de consumo Visa a

identifica9ao dos riscos inerentes ao processo de concessao de cnsectdito com 0

objetivo de validar as informacoes cadastrais para assegurar que 0 cliente tem 0

perfil de honrar seus compromissos financeiros

o concedente de credito analisa a pretensao do tomador com base nas

informayoes cadastrais fornecidas pela confirmayao eletr6nica de endereyo E uma

parte fundamental do cadastro positiv~ para facilitar a concessao do credito

Portanto a confirmay3o eletr6nica de endereyo assegura a validade de informayoes

e documentos id6neos pois 0 potencial credor pode vislumbrar um quadro completo

de dados e registros sobre 0 consumidor E uma ferramenta essencial e

complementar ao processo da analise e decisao de credito

A confirmayao eletr6nica de endereyo alem de contribuir para a melhoria do

sistema financeiro nacional beneficia 0 consumidor em virtude da maior seguranya

e estabilidade das operayoes de credito possibilitando a utilizayao das informayoes

10

inclusive para credito pre-aprovado sem nenhuma requisiyao formal pDr parte do

tomador potencial uma vez suas informa90es estao sempre atualizadas

II

3 JUSTIFICATIVAS

o baixo potencial de eredito de alguns pafses emergentes como par

exemplo 0 Brasil diz respeito a lenta reayao do sistema de crediario frente as

inova90es tecnol6gicas com a maior rapidez de compartilhamento de informacoes

sabre as tomadores

Hit estimativas que indicam que 0 cnsectdito voltado ao consume pode crescer

no Brasil Nos parses que tern urn controle eficiente das informayoes positivas de

bons pagadores que sao amplamente implementados e difundidos 0 erect ito chega

a ser tres vezes superior a media internacional Como exemplo pode-s8 citar a

Alemanha a qual possui urn dos mais completos e avancados cadastros positivQS

do mundo (httpwwwserasacombr 2006)

Todas as consideracoes acima demonstram a importancia da confirmayao

eletr6nica de endereyo Trata-se de uma tendencia mundial irreverslvel a ser

futuramente implementada no Brasil que se revela como instrumento de suma

importancia para 0 desenvolvimento econ6mico do Pais

Alem disso conferem as relayoes de credito muito mais velocidade menos

riscos mais seguranya uma vez que eliminam a circulayao de fichas cadastrais e

conseqDentemente barateiam custos

Porem para a correta e justa aferiyao da capaeidade de cada tomador de

eredito deve-se eonsiderar um universe maior composto nao apenas por

informayoes de inadimplemento mas tambem pelos compromissos assumidos e

pontualmente adimplidos pelo cadastrado

12

Oessa forma sera dado para concedente averiguar S8 eventual informayao

negativa e excepcional no historico de eredito do cadastrado au 58 e parte de urn

comportamento reiterado facultando-Ihe 0 calculo preciso e individualizado do Gusto

do capital

A confirmacao eletr6nica de endereyo e uma parte fundamental do cadastro

positivQ portanto rnais do que urn valor agregado aos servicos oferecidos pelos

bancos de dados de proteyao ao eredito constituindo-se em urn direito das pessoas

naturais e juridicas ter a sua capacidade de pagamento avaliada com precisao e

completude a tim de que sejam a elas aplicaveis as taxas de juros condizentes com

o risco das operacoes que contratarem

E cabe ressaltar que a experiencia de parses que utilizam esse sistema

prova que ele contribui consideravelmente para a reduyao dos juros e aumento das

vendas a credito

4 ESTUDO CONCEITUAL

Superadas estas quest6es e imperioso reconhecer a importancia da

confirmagao eletronica de enderego e documentos que e uma parte fundamental do

cadastre positiv~ bern como os procectimentos que devem nortear a sua criagao e

manutengao pelos bancos de dados de protegao ao erect ito posta que urn sistema

baseado em informagoes positivas vai incluir mais pessoas no contingente dos que

tern aces so ao erectito enquanto 0 sistema de informacoes negativas e excludente

o Brasil ja disp6e de le9i81a98oOque disciplina as atividades dos bancos de

dados e esta preste a estabelecer mecanismos mais especfficos para cadastramento

de informagoes de natureza positiva 0 ideal seria que essa regulamentayao fosse

contemplada em uma s6 lei considerando procedimentos que continuem

assegurando ao cadastrado 0 pleno exercfcio de seus direitos e ao banco de dados

a continuidade de suas atividades conferindo equilfbrio e harmonia entre eles na

justiga das taxas de juros cobradas no mercado brasileiro mas reduzidas para a

grande maio ria dos bons pagadores

A analise da participagao do credito no produto interne brute - PIB

demonstra que 0 percentual verificado nos parses desenvolvidos como por

exemplo nos Estados Unidos (655) na Italia (822) e na Alemanha (1123) esuperior aquele verificado no Brasil (278) - (dad os 2004 conforme FMI e Be) -

demonstrando que 0 progresso socioecon6mico do Pais esta atrelado ao fomento do

credito E Ifcito concluir que os Projetos de lei em tramite no Congresso Nacional ao

disporem favoravelmente aos cadastros positiv~s alem de facilitar as relagoes de

consum~ e de credito contribuirao para 0 desenvolvimento do Brasil

(httpwwwserasacombrserasalegaI35-set-04_m1htm 2006)

14

41 PRODUTOS A SEREM GERADOS PELO PROJETO

Construgao de urn portal de acesso na WEB permitindo somente 0 aces so

de associ ados cadastrados valid ados par senha e usuario Para validar os dados

cad astra is (nome endereyo telefones e documentos) 0 associ ado informara 0

telefone do cliente au urn documento do cliente Este portal tara a busca em urn

banco de dados e trarci todas as informagoes encontractas as quais 0 associado

confrontara com as fornecidas pelo cliente Cada busca ao banco de dados podera

ser contabilizada como uma forma de cobranya per quantidades de consultas

efetuadas pelo associado no usa do servigo de dados cadastrais

15

5 FUNDAMENTOS TEORICOS

o Rational Unified Process (tambem chamado de processo RUP) e um

processo de engenharia de software Tern uma abordagem baseada em disciplinas

para atribuir tarefas e responsabilidades dentro de uma organiza9ao de

desenvolvimento Sua meta e garantir a produgao de software de alta qualidade que

atenda as necessidades dos usuarios dentro de urn cronograma e de urn of9amento

previsiveis (httpwwwwthreexcomrup 2006)

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP

Disdplinas 111nlto II-E--bo--oa-ali~es-co~ns~f7rur-0~middotmiddot11TranSlcent~1

I~ Inlaquo 1 bmiddotIIEiObl~middotnJrMji~ nOl LnlJ~~~

Itera~oes

FONTE httpwwwwthreexcomrup

o RUP tern duas dimens6es

- eixo horizontal representa 0 tempo e mostra as aspectos do cicio de vida do

processo a medida que S8 desenvolve

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

10

inclusive para credito pre-aprovado sem nenhuma requisiyao formal pDr parte do

tomador potencial uma vez suas informa90es estao sempre atualizadas

II

3 JUSTIFICATIVAS

o baixo potencial de eredito de alguns pafses emergentes como par

exemplo 0 Brasil diz respeito a lenta reayao do sistema de crediario frente as

inova90es tecnol6gicas com a maior rapidez de compartilhamento de informacoes

sabre as tomadores

Hit estimativas que indicam que 0 cnsectdito voltado ao consume pode crescer

no Brasil Nos parses que tern urn controle eficiente das informayoes positivas de

bons pagadores que sao amplamente implementados e difundidos 0 erect ito chega

a ser tres vezes superior a media internacional Como exemplo pode-s8 citar a

Alemanha a qual possui urn dos mais completos e avancados cadastros positivQS

do mundo (httpwwwserasacombr 2006)

Todas as consideracoes acima demonstram a importancia da confirmayao

eletr6nica de endereyo Trata-se de uma tendencia mundial irreverslvel a ser

futuramente implementada no Brasil que se revela como instrumento de suma

importancia para 0 desenvolvimento econ6mico do Pais

Alem disso conferem as relayoes de credito muito mais velocidade menos

riscos mais seguranya uma vez que eliminam a circulayao de fichas cadastrais e

conseqDentemente barateiam custos

Porem para a correta e justa aferiyao da capaeidade de cada tomador de

eredito deve-se eonsiderar um universe maior composto nao apenas por

informayoes de inadimplemento mas tambem pelos compromissos assumidos e

pontualmente adimplidos pelo cadastrado

12

Oessa forma sera dado para concedente averiguar S8 eventual informayao

negativa e excepcional no historico de eredito do cadastrado au 58 e parte de urn

comportamento reiterado facultando-Ihe 0 calculo preciso e individualizado do Gusto

do capital

A confirmacao eletr6nica de endereyo e uma parte fundamental do cadastro

positivQ portanto rnais do que urn valor agregado aos servicos oferecidos pelos

bancos de dados de proteyao ao eredito constituindo-se em urn direito das pessoas

naturais e juridicas ter a sua capacidade de pagamento avaliada com precisao e

completude a tim de que sejam a elas aplicaveis as taxas de juros condizentes com

o risco das operacoes que contratarem

E cabe ressaltar que a experiencia de parses que utilizam esse sistema

prova que ele contribui consideravelmente para a reduyao dos juros e aumento das

vendas a credito

4 ESTUDO CONCEITUAL

Superadas estas quest6es e imperioso reconhecer a importancia da

confirmagao eletronica de enderego e documentos que e uma parte fundamental do

cadastre positiv~ bern como os procectimentos que devem nortear a sua criagao e

manutengao pelos bancos de dados de protegao ao erect ito posta que urn sistema

baseado em informagoes positivas vai incluir mais pessoas no contingente dos que

tern aces so ao erectito enquanto 0 sistema de informacoes negativas e excludente

o Brasil ja disp6e de le9i81a98oOque disciplina as atividades dos bancos de

dados e esta preste a estabelecer mecanismos mais especfficos para cadastramento

de informagoes de natureza positiva 0 ideal seria que essa regulamentayao fosse

contemplada em uma s6 lei considerando procedimentos que continuem

assegurando ao cadastrado 0 pleno exercfcio de seus direitos e ao banco de dados

a continuidade de suas atividades conferindo equilfbrio e harmonia entre eles na

justiga das taxas de juros cobradas no mercado brasileiro mas reduzidas para a

grande maio ria dos bons pagadores

A analise da participagao do credito no produto interne brute - PIB

demonstra que 0 percentual verificado nos parses desenvolvidos como por

exemplo nos Estados Unidos (655) na Italia (822) e na Alemanha (1123) esuperior aquele verificado no Brasil (278) - (dad os 2004 conforme FMI e Be) -

demonstrando que 0 progresso socioecon6mico do Pais esta atrelado ao fomento do

credito E Ifcito concluir que os Projetos de lei em tramite no Congresso Nacional ao

disporem favoravelmente aos cadastros positiv~s alem de facilitar as relagoes de

consum~ e de credito contribuirao para 0 desenvolvimento do Brasil

(httpwwwserasacombrserasalegaI35-set-04_m1htm 2006)

14

41 PRODUTOS A SEREM GERADOS PELO PROJETO

Construgao de urn portal de acesso na WEB permitindo somente 0 aces so

de associ ados cadastrados valid ados par senha e usuario Para validar os dados

cad astra is (nome endereyo telefones e documentos) 0 associ ado informara 0

telefone do cliente au urn documento do cliente Este portal tara a busca em urn

banco de dados e trarci todas as informagoes encontractas as quais 0 associado

confrontara com as fornecidas pelo cliente Cada busca ao banco de dados podera

ser contabilizada como uma forma de cobranya per quantidades de consultas

efetuadas pelo associado no usa do servigo de dados cadastrais

15

5 FUNDAMENTOS TEORICOS

o Rational Unified Process (tambem chamado de processo RUP) e um

processo de engenharia de software Tern uma abordagem baseada em disciplinas

para atribuir tarefas e responsabilidades dentro de uma organiza9ao de

desenvolvimento Sua meta e garantir a produgao de software de alta qualidade que

atenda as necessidades dos usuarios dentro de urn cronograma e de urn of9amento

previsiveis (httpwwwwthreexcomrup 2006)

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP

Disdplinas 111nlto II-E--bo--oa-ali~es-co~ns~f7rur-0~middotmiddot11TranSlcent~1

I~ Inlaquo 1 bmiddotIIEiObl~middotnJrMji~ nOl LnlJ~~~

Itera~oes

FONTE httpwwwwthreexcomrup

o RUP tern duas dimens6es

- eixo horizontal representa 0 tempo e mostra as aspectos do cicio de vida do

processo a medida que S8 desenvolve

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

II

3 JUSTIFICATIVAS

o baixo potencial de eredito de alguns pafses emergentes como par

exemplo 0 Brasil diz respeito a lenta reayao do sistema de crediario frente as

inova90es tecnol6gicas com a maior rapidez de compartilhamento de informacoes

sabre as tomadores

Hit estimativas que indicam que 0 cnsectdito voltado ao consume pode crescer

no Brasil Nos parses que tern urn controle eficiente das informayoes positivas de

bons pagadores que sao amplamente implementados e difundidos 0 erect ito chega

a ser tres vezes superior a media internacional Como exemplo pode-s8 citar a

Alemanha a qual possui urn dos mais completos e avancados cadastros positivQS

do mundo (httpwwwserasacombr 2006)

Todas as consideracoes acima demonstram a importancia da confirmayao

eletr6nica de endereyo Trata-se de uma tendencia mundial irreverslvel a ser

futuramente implementada no Brasil que se revela como instrumento de suma

importancia para 0 desenvolvimento econ6mico do Pais

Alem disso conferem as relayoes de credito muito mais velocidade menos

riscos mais seguranya uma vez que eliminam a circulayao de fichas cadastrais e

conseqDentemente barateiam custos

Porem para a correta e justa aferiyao da capaeidade de cada tomador de

eredito deve-se eonsiderar um universe maior composto nao apenas por

informayoes de inadimplemento mas tambem pelos compromissos assumidos e

pontualmente adimplidos pelo cadastrado

12

Oessa forma sera dado para concedente averiguar S8 eventual informayao

negativa e excepcional no historico de eredito do cadastrado au 58 e parte de urn

comportamento reiterado facultando-Ihe 0 calculo preciso e individualizado do Gusto

do capital

A confirmacao eletr6nica de endereyo e uma parte fundamental do cadastro

positivQ portanto rnais do que urn valor agregado aos servicos oferecidos pelos

bancos de dados de proteyao ao eredito constituindo-se em urn direito das pessoas

naturais e juridicas ter a sua capacidade de pagamento avaliada com precisao e

completude a tim de que sejam a elas aplicaveis as taxas de juros condizentes com

o risco das operacoes que contratarem

E cabe ressaltar que a experiencia de parses que utilizam esse sistema

prova que ele contribui consideravelmente para a reduyao dos juros e aumento das

vendas a credito

4 ESTUDO CONCEITUAL

Superadas estas quest6es e imperioso reconhecer a importancia da

confirmagao eletronica de enderego e documentos que e uma parte fundamental do

cadastre positiv~ bern como os procectimentos que devem nortear a sua criagao e

manutengao pelos bancos de dados de protegao ao erect ito posta que urn sistema

baseado em informagoes positivas vai incluir mais pessoas no contingente dos que

tern aces so ao erectito enquanto 0 sistema de informacoes negativas e excludente

o Brasil ja disp6e de le9i81a98oOque disciplina as atividades dos bancos de

dados e esta preste a estabelecer mecanismos mais especfficos para cadastramento

de informagoes de natureza positiva 0 ideal seria que essa regulamentayao fosse

contemplada em uma s6 lei considerando procedimentos que continuem

assegurando ao cadastrado 0 pleno exercfcio de seus direitos e ao banco de dados

a continuidade de suas atividades conferindo equilfbrio e harmonia entre eles na

justiga das taxas de juros cobradas no mercado brasileiro mas reduzidas para a

grande maio ria dos bons pagadores

A analise da participagao do credito no produto interne brute - PIB

demonstra que 0 percentual verificado nos parses desenvolvidos como por

exemplo nos Estados Unidos (655) na Italia (822) e na Alemanha (1123) esuperior aquele verificado no Brasil (278) - (dad os 2004 conforme FMI e Be) -

demonstrando que 0 progresso socioecon6mico do Pais esta atrelado ao fomento do

credito E Ifcito concluir que os Projetos de lei em tramite no Congresso Nacional ao

disporem favoravelmente aos cadastros positiv~s alem de facilitar as relagoes de

consum~ e de credito contribuirao para 0 desenvolvimento do Brasil

(httpwwwserasacombrserasalegaI35-set-04_m1htm 2006)

14

41 PRODUTOS A SEREM GERADOS PELO PROJETO

Construgao de urn portal de acesso na WEB permitindo somente 0 aces so

de associ ados cadastrados valid ados par senha e usuario Para validar os dados

cad astra is (nome endereyo telefones e documentos) 0 associ ado informara 0

telefone do cliente au urn documento do cliente Este portal tara a busca em urn

banco de dados e trarci todas as informagoes encontractas as quais 0 associado

confrontara com as fornecidas pelo cliente Cada busca ao banco de dados podera

ser contabilizada como uma forma de cobranya per quantidades de consultas

efetuadas pelo associado no usa do servigo de dados cadastrais

15

5 FUNDAMENTOS TEORICOS

o Rational Unified Process (tambem chamado de processo RUP) e um

processo de engenharia de software Tern uma abordagem baseada em disciplinas

para atribuir tarefas e responsabilidades dentro de uma organiza9ao de

desenvolvimento Sua meta e garantir a produgao de software de alta qualidade que

atenda as necessidades dos usuarios dentro de urn cronograma e de urn of9amento

previsiveis (httpwwwwthreexcomrup 2006)

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP

Disdplinas 111nlto II-E--bo--oa-ali~es-co~ns~f7rur-0~middotmiddot11TranSlcent~1

I~ Inlaquo 1 bmiddotIIEiObl~middotnJrMji~ nOl LnlJ~~~

Itera~oes

FONTE httpwwwwthreexcomrup

o RUP tern duas dimens6es

- eixo horizontal representa 0 tempo e mostra as aspectos do cicio de vida do

processo a medida que S8 desenvolve

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

12

Oessa forma sera dado para concedente averiguar S8 eventual informayao

negativa e excepcional no historico de eredito do cadastrado au 58 e parte de urn

comportamento reiterado facultando-Ihe 0 calculo preciso e individualizado do Gusto

do capital

A confirmacao eletr6nica de endereyo e uma parte fundamental do cadastro

positivQ portanto rnais do que urn valor agregado aos servicos oferecidos pelos

bancos de dados de proteyao ao eredito constituindo-se em urn direito das pessoas

naturais e juridicas ter a sua capacidade de pagamento avaliada com precisao e

completude a tim de que sejam a elas aplicaveis as taxas de juros condizentes com

o risco das operacoes que contratarem

E cabe ressaltar que a experiencia de parses que utilizam esse sistema

prova que ele contribui consideravelmente para a reduyao dos juros e aumento das

vendas a credito

4 ESTUDO CONCEITUAL

Superadas estas quest6es e imperioso reconhecer a importancia da

confirmagao eletronica de enderego e documentos que e uma parte fundamental do

cadastre positiv~ bern como os procectimentos que devem nortear a sua criagao e

manutengao pelos bancos de dados de protegao ao erect ito posta que urn sistema

baseado em informagoes positivas vai incluir mais pessoas no contingente dos que

tern aces so ao erectito enquanto 0 sistema de informacoes negativas e excludente

o Brasil ja disp6e de le9i81a98oOque disciplina as atividades dos bancos de

dados e esta preste a estabelecer mecanismos mais especfficos para cadastramento

de informagoes de natureza positiva 0 ideal seria que essa regulamentayao fosse

contemplada em uma s6 lei considerando procedimentos que continuem

assegurando ao cadastrado 0 pleno exercfcio de seus direitos e ao banco de dados

a continuidade de suas atividades conferindo equilfbrio e harmonia entre eles na

justiga das taxas de juros cobradas no mercado brasileiro mas reduzidas para a

grande maio ria dos bons pagadores

A analise da participagao do credito no produto interne brute - PIB

demonstra que 0 percentual verificado nos parses desenvolvidos como por

exemplo nos Estados Unidos (655) na Italia (822) e na Alemanha (1123) esuperior aquele verificado no Brasil (278) - (dad os 2004 conforme FMI e Be) -

demonstrando que 0 progresso socioecon6mico do Pais esta atrelado ao fomento do

credito E Ifcito concluir que os Projetos de lei em tramite no Congresso Nacional ao

disporem favoravelmente aos cadastros positiv~s alem de facilitar as relagoes de

consum~ e de credito contribuirao para 0 desenvolvimento do Brasil

(httpwwwserasacombrserasalegaI35-set-04_m1htm 2006)

14

41 PRODUTOS A SEREM GERADOS PELO PROJETO

Construgao de urn portal de acesso na WEB permitindo somente 0 aces so

de associ ados cadastrados valid ados par senha e usuario Para validar os dados

cad astra is (nome endereyo telefones e documentos) 0 associ ado informara 0

telefone do cliente au urn documento do cliente Este portal tara a busca em urn

banco de dados e trarci todas as informagoes encontractas as quais 0 associado

confrontara com as fornecidas pelo cliente Cada busca ao banco de dados podera

ser contabilizada como uma forma de cobranya per quantidades de consultas

efetuadas pelo associado no usa do servigo de dados cadastrais

15

5 FUNDAMENTOS TEORICOS

o Rational Unified Process (tambem chamado de processo RUP) e um

processo de engenharia de software Tern uma abordagem baseada em disciplinas

para atribuir tarefas e responsabilidades dentro de uma organiza9ao de

desenvolvimento Sua meta e garantir a produgao de software de alta qualidade que

atenda as necessidades dos usuarios dentro de urn cronograma e de urn of9amento

previsiveis (httpwwwwthreexcomrup 2006)

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP

Disdplinas 111nlto II-E--bo--oa-ali~es-co~ns~f7rur-0~middotmiddot11TranSlcent~1

I~ Inlaquo 1 bmiddotIIEiObl~middotnJrMji~ nOl LnlJ~~~

Itera~oes

FONTE httpwwwwthreexcomrup

o RUP tern duas dimens6es

- eixo horizontal representa 0 tempo e mostra as aspectos do cicio de vida do

processo a medida que S8 desenvolve

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

4 ESTUDO CONCEITUAL

Superadas estas quest6es e imperioso reconhecer a importancia da

confirmagao eletronica de enderego e documentos que e uma parte fundamental do

cadastre positiv~ bern como os procectimentos que devem nortear a sua criagao e

manutengao pelos bancos de dados de protegao ao erect ito posta que urn sistema

baseado em informagoes positivas vai incluir mais pessoas no contingente dos que

tern aces so ao erectito enquanto 0 sistema de informacoes negativas e excludente

o Brasil ja disp6e de le9i81a98oOque disciplina as atividades dos bancos de

dados e esta preste a estabelecer mecanismos mais especfficos para cadastramento

de informagoes de natureza positiva 0 ideal seria que essa regulamentayao fosse

contemplada em uma s6 lei considerando procedimentos que continuem

assegurando ao cadastrado 0 pleno exercfcio de seus direitos e ao banco de dados

a continuidade de suas atividades conferindo equilfbrio e harmonia entre eles na

justiga das taxas de juros cobradas no mercado brasileiro mas reduzidas para a

grande maio ria dos bons pagadores

A analise da participagao do credito no produto interne brute - PIB

demonstra que 0 percentual verificado nos parses desenvolvidos como por

exemplo nos Estados Unidos (655) na Italia (822) e na Alemanha (1123) esuperior aquele verificado no Brasil (278) - (dad os 2004 conforme FMI e Be) -

demonstrando que 0 progresso socioecon6mico do Pais esta atrelado ao fomento do

credito E Ifcito concluir que os Projetos de lei em tramite no Congresso Nacional ao

disporem favoravelmente aos cadastros positiv~s alem de facilitar as relagoes de

consum~ e de credito contribuirao para 0 desenvolvimento do Brasil

(httpwwwserasacombrserasalegaI35-set-04_m1htm 2006)

14

41 PRODUTOS A SEREM GERADOS PELO PROJETO

Construgao de urn portal de acesso na WEB permitindo somente 0 aces so

de associ ados cadastrados valid ados par senha e usuario Para validar os dados

cad astra is (nome endereyo telefones e documentos) 0 associ ado informara 0

telefone do cliente au urn documento do cliente Este portal tara a busca em urn

banco de dados e trarci todas as informagoes encontractas as quais 0 associado

confrontara com as fornecidas pelo cliente Cada busca ao banco de dados podera

ser contabilizada como uma forma de cobranya per quantidades de consultas

efetuadas pelo associado no usa do servigo de dados cadastrais

15

5 FUNDAMENTOS TEORICOS

o Rational Unified Process (tambem chamado de processo RUP) e um

processo de engenharia de software Tern uma abordagem baseada em disciplinas

para atribuir tarefas e responsabilidades dentro de uma organiza9ao de

desenvolvimento Sua meta e garantir a produgao de software de alta qualidade que

atenda as necessidades dos usuarios dentro de urn cronograma e de urn of9amento

previsiveis (httpwwwwthreexcomrup 2006)

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP

Disdplinas 111nlto II-E--bo--oa-ali~es-co~ns~f7rur-0~middotmiddot11TranSlcent~1

I~ Inlaquo 1 bmiddotIIEiObl~middotnJrMji~ nOl LnlJ~~~

Itera~oes

FONTE httpwwwwthreexcomrup

o RUP tern duas dimens6es

- eixo horizontal representa 0 tempo e mostra as aspectos do cicio de vida do

processo a medida que S8 desenvolve

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

14

41 PRODUTOS A SEREM GERADOS PELO PROJETO

Construgao de urn portal de acesso na WEB permitindo somente 0 aces so

de associ ados cadastrados valid ados par senha e usuario Para validar os dados

cad astra is (nome endereyo telefones e documentos) 0 associ ado informara 0

telefone do cliente au urn documento do cliente Este portal tara a busca em urn

banco de dados e trarci todas as informagoes encontractas as quais 0 associado

confrontara com as fornecidas pelo cliente Cada busca ao banco de dados podera

ser contabilizada como uma forma de cobranya per quantidades de consultas

efetuadas pelo associado no usa do servigo de dados cadastrais

15

5 FUNDAMENTOS TEORICOS

o Rational Unified Process (tambem chamado de processo RUP) e um

processo de engenharia de software Tern uma abordagem baseada em disciplinas

para atribuir tarefas e responsabilidades dentro de uma organiza9ao de

desenvolvimento Sua meta e garantir a produgao de software de alta qualidade que

atenda as necessidades dos usuarios dentro de urn cronograma e de urn of9amento

previsiveis (httpwwwwthreexcomrup 2006)

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP

Disdplinas 111nlto II-E--bo--oa-ali~es-co~ns~f7rur-0~middotmiddot11TranSlcent~1

I~ Inlaquo 1 bmiddotIIEiObl~middotnJrMji~ nOl LnlJ~~~

Itera~oes

FONTE httpwwwwthreexcomrup

o RUP tern duas dimens6es

- eixo horizontal representa 0 tempo e mostra as aspectos do cicio de vida do

processo a medida que S8 desenvolve

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

15

5 FUNDAMENTOS TEORICOS

o Rational Unified Process (tambem chamado de processo RUP) e um

processo de engenharia de software Tern uma abordagem baseada em disciplinas

para atribuir tarefas e responsabilidades dentro de uma organiza9ao de

desenvolvimento Sua meta e garantir a produgao de software de alta qualidade que

atenda as necessidades dos usuarios dentro de urn cronograma e de urn of9amento

previsiveis (httpwwwwthreexcomrup 2006)

FIGURA 01 - MOSTRA A ARQUITETURA DO RUP

Disdplinas 111nlto II-E--bo--oa-ali~es-co~ns~f7rur-0~middotmiddot11TranSlcent~1

I~ Inlaquo 1 bmiddotIIEiObl~middotnJrMji~ nOl LnlJ~~~

Itera~oes

FONTE httpwwwwthreexcomrup

o RUP tern duas dimens6es

- eixo horizontal representa 0 tempo e mostra as aspectos do cicio de vida do

processo a medida que S8 desenvolve

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

16

~ eixo vertical representa as disciplinas que agrupam as atividades de

maneira 16gica par natureza

A primeira dimensao representa 0 aspecto dinamico do processo quando sle

e aprovado e e expressa pelo eixo horizontal representando 0 tempo suas fases

itera90es e marcos de urn projeto conforme pode ser visualizado na figura 02

FIGURA 02 - EIXO HORIZONTAL (FASESI

lnicia-ao I Elaboracao I Construao I Transj~ao IT T----=-==-------JT TMarco da Marco decapacidade lan~amentooperacional do produtoinicial

Marea dcsobjelivos docicio de vida

Marco daarquilelura dociclodevida

terrpo

FONTE hltpllwwwwthreexcomrup

A partir de uma perspectiva de gerenciamento 0 cicio de vida de software do

Rational Unified Process (RUP) e dividido em quatro fases sequenciais cada uma

conclufda por um marco principal ou seja cada fase e basicamente um intervalo de

tempo entre dois marcos principais Em cada final de fase e executada uma

avaliayao para determinar se os objetivos da fase foram alcanyados Uma avaliayao

satisfat6ria permite que 0 projeto passe para a pr6xima fase

(httpwwwwthreexcomrup 2006)

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

17

51 FASES DE PLANEJAMENTO

As fases nao sao identicas em termos de programayao e esforyo Embora

isso varie muito de acordo com 0 projeto urn cicio de desenvolvimento inicial tfpico

para urn projeto de media tamanho dave prever a seguinte distribuiyao de esforyo e

programayao

FIGURA 03 - REPRESENT AyAO DO PLANEJAMENTO ESFORyO DE PROGRAMAyAO

Iniciacao Elaboradio Construcao TransicaoEsfOf(O -5 20 65 0

Prouramacao 10 30 50 10

FONTE hUpllwwwwlhreexcomrupf

que pade sar descrito graficamente como

recuramp)

hdIllicia~ao Elaboraryao Constru~ao Translyao

tel1)O

FONTE httpwwwwthreexcomlrup

Para urn cielo de evoluyao as fases de iniciayao e de elaborayao seriam

bern menores Ferramentas que automatizam parte do 85fof90 de construyao podem

amenizar isso tamanda a fase de construyao muito menor do que as fases de

iniciacaoe de elaborayao juntas

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

18

Uma pas sag em pelas quatro fases e urn cicio de desenvolvimento cad a

passagem pelas qualro lases produz uma geraao do software

(hUpIwwwwthreexcomrup 2006)

52 PROCESSOS DE ENGENHARIA DE SOFTWARE

A segunda dimensao representa 0 aspecto estatica do processo como ele edescrito em termos de componentes disciplinas atividades fluxos de trabalho

artefatos e papeis do processo

Urn processo e urn conjunto de pass os parcialmente ordenados com a

intencao de atingir uma meta Em engenharia de software a meta e criar urn

software au aperieicoar urn existente em engenharia de processos a meta edesenvolver au aperfeicoar urn processo No RUP eles sao organizados em urn

con junto de disciplinas para posteriormente definirem as fluxos de trabalho e Qutros

elementos do processo

FIGURA 04 - EIXO VERTICAL (PROCESSOS)

RequisitosModelagemde Neg6cios

PlanejamentoInicial

FONTE htlpllvmwwlhreexcomrup

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

19

Em termos de modelagem de negocios 0 processo de desenvolvimento de

software e um processo de negocios e 0 Rational Unified Process (RUP) e um

processo de neg6cios gene rico para engenharia de software orientada a objetos Ele

descreve uma familia de processos de engenharia de software relacionados que

compartilham uma estrutura comum uma arquitetura de processos comum Ele

proporciona uma abordagem disciplinada para a atribuicao de tarefas e de

responsabilidades dentro de uma organizayao de desenvolvimento Sua meta egarantir a produao de software de alta qua1idadeque atenda as necessidades dos

usuarios dentro de uma programacao e urn orcamento previslveis 0 RUP captura

muitas das melhores praticas do desenvolvimento de software madema de forma

que possam ser adaptadas para uma grande variedade de projetos e de

organizagoes

Quando um sistema de software e desenvolvido com egan do do zero 0

desenvolvimento e 0 processo de criagao de um sistema a partir dos requisitos

Porem depois que os sistemas tiverem tom ado forma (ou usando nossos termos

tiverem pass ado pelo cicio de desenvolvimento inicial) os desenvolvimentos

subseqOentes serao 0 processo de adaptagao do sistema aos requisitos novos ou

modificados Isso se aplica durante todo 0 cicio de vida do sistema

FIGURA 05 - PROCESSO DE ENGENHARIA DE SOFTWARE

Roc OW 1 Po~lto d oeo 1 em do bullouaHerados deSo11ware

FONTE htlpllwwwwthreexcomrupl

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

o processo de engenharia de software e 0 processo de

desenvolvimento de um sistema a partir dos requisitos sejam eles novos

(cicio de desenvolvimento inicial) OU alterados (cicio de evoIU980)

(httpwwwwthreexcomirupi Rational the Software Development Company

2006)

20

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

6 FERRAMENTAS PARA IMPLEMENTAltAO

Ap6s pesquisas na Internet para 0 desenvolvimento de aplicaC(oes comercias

fcram escolhidas para 0 desenvolvimento deste projeto as seguintes ferramentas

Linguagem de programavao PHP par varios motivDs justificou-se a escolha

desta linguagem entras as quais Gitamos 0 faeil aprendizado atualidade bastante

difundida gratuita e principalmente multi-plataforma al8m de facil integra9ao com 0

banco de dados e com c6digos html e tambem nas pesquisas pela Internet a maior

parte dos provedores oferecem a baixo custo 0 pacole servidor apache rnais php e

mysql

Servidor de Aplica90es todos os principais servidores da web sao suportados

pelo PHP em destaque apache e bastante difundido e conhecido no mercado Por

sua robustez e sua confiabilidade assegurada foi 0 escolhido

Plataformas Suportadas Linux FreeBSD Unix(HP-UX Solaris e OpenBSD)

Windows Mae OSX e Rise OS Para 0 desenvolvimento deste projeto foi escolhido 0

Windows por ser 0 sistema operacional mais usado e mais facil de operar Desde

sua concepyao foram escolhidas ferramentas linguagens e ban cos de dados

suportados por diversas plataformas para que sua operayao nao fica sse preso a

nenhuma delas Com isso obtevemiddotse a reduyao de custos por que 0 mesmo podera

ser instalado em plataforma de software livre como e 0 caso do Linux

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

22

FIGURA 06 - TABELA DE BANCO DE DADOS SUPORTADOS

Empress

Atabas D Oracle

Dbase

FilePro

flypenvave

IBM DB2Illforillix

FONTE hUpJwwwgeocitiescomcantinhodophpminicursophpJphpresumohtml

MYSQL foi escolhido pela constatacao de acessos a diversos sites na

Internet com a sua con stante atualizacao e utilizacao E um dos banco de dados

mais utilizados na Internet isso me deixou confiante alem de existir varias

ferramentas para 0 gerenciamento do mesmo com por exemplo 0 PHPMyAdmin

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

23

7 METODOLOGIA DE DESENVOLVIMENTO

Para 0 desenvolvimento da Confirmagao Eletr6nica de enderelaquoo foi adotada

a parte necessaria do processo RUP para sua construqao conforme fundamentado

no capitulo 5 e as ferramentas de desenvolvimento especificadas no capitulo 6

71 ANALISE ESSENCIAL

Evoluyao da analise estruturada captura a essencia e subdividida em

- Modelo Ambiental representa os requisitos declara90es do objetivo do

sistema lista de eventos e diagramas de contexto Mostra 0 que esta fora do

sistema

Modelo Comportamental mostram os dad os dentro do sistema

visualizados pelos DER (Diagrama Entidade Relacionamento) DFD (Diagrama de

Fluxo de Dados) e diagramas de estrutura

Os modelos descritos anteriormente serao utilizados de forma direta

objetivando seu entendimento na elabora9ao e constru9ao do portal de confirmayao

de endereo (httpwwwwthreexcomrup Rational the Software Development

Company 2006)

72 DECLARAcAo DOS OBJETIVOS DO SISTEMA

o portal de Confirmaao Eletr6nica de Endereo tem como objetivo a

valida98o dos dados cadastrais e a confirmayao do endereyo pela pesquisa do

telefone e documentos (CPF ou CNPJ) do cliente informados pelo associado que se

encontradas serao exibidas na tela para serem confrontadas visualmente pelo

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

cliente

solicitante objet ivan do com isso a garantir a confensectncia e idoneidade dos dados do

24

73 LlSTA DE EVENTOS

1 TI atualiza base de dados (telefones documentos e dados cadastrais dos

clientes)

2 Funcionario cadastra associ ados

3 Associados pesquisam base de dad os

74 DIAGRAMA DE CONTEXTO

FIGURA 07 - DIAGRAMA DE CONTEXTO

~-TI

ConfirmayaoEletr6nica deEndereo

Pesquisa - 3

I Associados

I Funclonano

~tros-2

Respostas da Pesquisa - 3

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

75 DFD - DIAGRAMA DE FLUXO DE DADOS

1 TI alualiza base de dad os

FIGURA 08 - TI ATUALIZA BASE DE DADOS

AtualizarBase deDados

I

2 Funcionario cadastra associ ados

25

----11iTeefones

FIGURA 09 - FUNCIONARIO CADASTRA ASSOCIADOS

2CadastraAssociados

3 Associados pesquisam base de dados

FIGURA 10 - ASSOCIADOS PESQUISAM NA BASE DE DADOS

3PesquisamBase deDados

21 Associados

1 Telefones

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

26

8 TESTES

Foi utilizado como areas de testes 0 proprio ambiente de desenvolvimento

Criado a banco de dados cee (confirmaao eletr6nica de endereos) foi

editado 0 arquivo de configurayoes phpini do PHP e a linha seUime_limit(30)

alterada para seUime_limit(O) com isso 0 tempo de persistEmcia do browser de 30

segundos ficou para infinito Necessaria esta alterar80 para importa9ao da base de

dad os que e demorada No browser foi digitado a linha

httplocalhostiinstalaJincluir_arquivosphpf para dar inicio a importacao da base de

dados constantes de alguns arquivos texlos 0 equipamento utilizado foi 0 Pentium

700 MHz com 512 de RAM HD 80 gigabytes de disco rigido

Para agilizar a pesquisa no banco de dados foi indexada a base pelo numero

do documento que ficou uma noite processancto e mais Dutra noite para indexar pelo

numero do telefone tempo estimado gasto de 8 horas em am bas as atividades

Apos a base pranta fcram cadastrados diversos usuarios para testes

deixando os ativos e inativos e executando diversas pesquisas no banco de dad os e

confrontando as informatr6es retomadas com as pesquisas atraves do gerenciador

de banco de dados PHPAdmin

Ajustes no c6digo foram feitos para agilizar a pesquisa consistir os usuarios

associados e mostrar de forma legfvel as informa96es pesquisadas encontradas

Foi aprimorada a tela de forma na digitayao de telefone e documentos e

validatrao do usuario e senha foi feila diretamente uma tela unica com isso foi

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

agilizado 0 tempo de digitartao e nipida visualizartao das pesquisas com apenas u

clique

Concluidos os testes foi disponibilizado um prot6tipo para avaliartao

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

28

9 CONCLUSAO

Em uma economia cada vez mais globalizada 0 desenvolvimento deste

projeto apresentou uma estrategia mercadol6gica na obtenyao de informayoes

atualizadas fundamental para adquirir vanta gem competitiva sabre os concorrentes

conhecendo e validando desta forma melhor 0 seu cliente Apresenta vantagem para

ambos 0 comerciante agilizou seu processo de cadastramento com seguranca das

informacoes obtidas na base de dados 0 cliente par sua vez beneficiou-se do

processo de concessao do erectito obtendo urn taxa de juros reduzida

Outro aspecto positivo para 0 mercado e 0 estimulo a concorrencia entre

estabelecimentos comerciais uma vez que as informacoes positivas passam a ter

valor agregado e garantia de adimplencia contribuindo para 0 aumento das vendas a

prazo

o ponto principal e 0 que cliente estando no cadastro de confirmacao

eletronica de endereco sempre estara com seus dados sempre atualizados

facilitando assim 0 seu cadastramento no comercio

E cabe ressaltar que a experiencia de pafses que utilizam esse sistema

prova que ele contribui consideravelmente para a reducao dos juros e aumento das

vendas a credito

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

29

10 DESENVOLVIMENTOS FUTUROS

A Confirma9ao Eletronica de Endere90 sera integrada no Cadastro Positivo

a ser desenvolvido com informayoes com pi etas formarao 0 escore do cliente

consultado referente a sua pontualidade dos pagamentos percentual de

comprometimento da renda frequemcia de compras a prazo entre outras as dados

sao dispostos eficientemente no banco de dados formando 0 perii do cliente

Mais sera urn risco calculado e neste casa 0 associ ado podera ate oferecer

condiyoes especiais de financiamento com isso ele tera a certeza de estar

vendendo para urn born pagador e esta par sua vez sera beneficiado com taxas de

juros menores com isso alcanya-se 0 objetiva de aumentar a oferta de crEsectdito no

mercado para potenciais compradores que pagam suas contas em dia sendo assim

favorecidos pelo menor valor das prestaC)oes que par sua vez e urn incentivo para si

rnesmo ter urn born hist6rico de credito no rnercado

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

30

11 MANUAL

111INSTALAQAO

Para efetuar a instalavao da Confirmavao Eletr6nica de Endereyo enecessaria preparar 0 ambiente com sistema operacional Windows XP banco de

dados MYSOL PHPMyAdmin gerenciador do MYSOL linguagem de programagao

PHP e servidor de paginas Apache com para execu93o das paginas web 0 browse

Internet Explorer ou compalivel (Mozilla Fireox Opera)

1111 Download dos Itens necessarios

Referente a instalayao do Apache usar a versao 13 vista que na

documentagao do PHP existe a seguinte recomendag3o Nao use Apache 20 e

PHP em urn sistema de prodwao seja no Unix au no Windows

(httpwwwphpneVmanualpt_BRlinstallapache2php)

o download dos programas a serem usados pode ser feito em

- Apache httphttpdapacheorgldownloadcgi

- MySOL httpdevmysglcomdownloads

- PHP httpwwwphpneVdownloadsphp

- PHPMyAdmin httpwwwphpmyadminneV

1112 Instala9ao dos Componentes Baixados

Execute a instalayao do Apache e 0 instale com as configurayoes pad roes

Se quiser pode escolher Dutro diret6rio para a instalagao

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

31

Extraia 0 MySQL em uma pasta qualquer Recomendo dentro da pasta on de

voce instalou Apache Ex CArquivos de ProgramasApache

GroupApachelmysql

Extraia 0 PHP 5 na pasta Clphp5

Descompacte 0 PHPMyAdmin na pasta CArquivos de programasApache

GroupApachelhtdocslphpMyAdmin

1113 ConfiguraS3o dos Componentes

Configurando 0 PHP Na pasta clphp5 e co pie 0 arquivo php5tsdll para a

seguinte pasta de acordo com 0 seu Windows

- clwindowslsystem (em Windows 9x1Me)

- clwindowslsystem32 (em WindowsXP)

- clwinntlsystem32 (para Windows NT2000)

Copie tambem 0 arquivo clphp51libmysqldll para umas das pastas ditas

acima de acordo com 0 Windows em usa Esse arquivo e necessaria para 0

funcionamento do MySQL no PHPAinda no cphp5 renomeie 0 arquivo phpini-

dist para phpini e abra-o Procure a linha extension~dir e a altere para

extension_dir = cphp5exV e 0 diret6rio onde ficam as extens6es do php (MySQL

Curl GO etc) Agora localize a linha extension=php_mysqldll e tire 0 do inicio

dela Se quiser tambem ja aproveite e 1aga 0 mesma na linha

extension=php_9d2dll casa queira a biblioteca GD para a manipulagao de

imagens

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

32

Salve as alterac6es e maya 0 phpini para a pasta

- clwindows (em Windows 9x1MeXP)

- clwinnt (para Windows NT2000)

Configurando 0 Apache na pasta onde foi instalado 0 Apache e abra 0

arquivo confhttpdconf em qualquer editor de texto (Ex Bloco de Notas)

Localize a linha LoadModule uniqu8_id_module modulesmod_uniqu8_idso

e logo abaixo deja adicione

LoadModule php5_module cphp5php5apachedll

Localize a linha Add Module mod_setenvifc e logo abaixo adicione

Add Module mod_php5c

Localize AddType applicationx-tar tgz e logo abaixD adicione

AddType applicationx-httpd-php php

AddType applicationx-httpd-php-source phps

Localize

dfModule mod_dircgt

Directorylndex indexhtml

ltlfModulegt

E [ago ao lado do indexhtml adicione

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

33

indexphp defaultphp mainphp

Nao ha nada para 59 configurar no MySQL 56 iniciar 0 mesma Na pasta

que foi instalado 0 MySQL entao abra 0 binmysqldexe iniciando 0 servidor do

MySQL Lembrando que sempre tera de iniciar 0 MySQL Se naG quiser ir na pasta

toda vez que iniciar 0 computador erie urn atalho para 0 binmysqldexe e coloque

no Iniciar Programas Inicializar (au Iniciar de acordo com 0 windows)

Falta pOUCO va em lniciar Programas Apache HTTP Server Control

Apache Server Restarf para reinicializar 0 Apache com as altera90es feitas

Pronto Agora voce pode tem PHP5 + MySQL em seu Windows

Para efetuar urn teste erie urn arquivo chamado phpinfophp com 0

conteudo

lt

phpinfoO

Coloque na pasta htdocs dentro da pasta do Apache Abra seu navegador e

digite httplocalhosVphpinfophp Se a pagina abrir com as informa90es do PHP

significa que tudo deu certo

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

34

1114 Instalayao da Confirmayao Eletr6nica de Endereyo

Insira 0 CD na unidade leitora de CD e clique duas vezes no arquivo

cee8xe 0 masma sera descompactado no caminho CArquivos de

programaslApache GrouplApachelhtdocslcee

No browse e digite o seguinte endereyo

httplocalhosUphpmyadminindexphp em Create new Database digite cee e clique

no batao create para criar 0 banco de dados da Confirmayao Eletr6nica de

Endereo

Para instalar a base de dados na linha do browse informe 0 seguinte

endere90 httplocalhosVceeinstalaiinclui arquivosphp e clique no link CLIQUE

AQUI PARA INICIAR AGORA E AGUADE Este procedimento iniciara a carga dos

arquivos com informa90es completas para a base de dados Par este procedimento

levar um longo tempo na carga do banco de dados foi apenas selecionados alguns

registros para usa desse prototipo

112 OPERAltAO

1121 Administrador do Acesso do Banco de Dados

E a funcao da pessoa responsavel por cadastrar usuarios que terao acesso

a base de dados da Confirmacao Eletr6nica de Endereco

Abra 0 browse e digite 0 seguinte endereo httpiocalhostceeindexhtml

aparecera a tela principal para cadastrar um usuario associ ado para ter acesso ao

banco de dados no campo login digite admin e no campo senha informe admin e

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

35

clique no batao confirma aparecera a tela de cadastro de usuarios associados

Cadastre urn usuario inform an do nome login senha e marcado a caixa de

checagem ativo e clique no batao confirma Aparecera a mensagem usuario

cadastrado com sucesso

1122 Usuario Associado para Consultar 0 Banco de Oados

Para ter aces so as consultas do banco de dados e necessaria solicitar ao

administrador a sua associa~ao com seu nome login e senha

Estando cadastrado digite no browse o endereyo

httplocalhosVceelindexhtml agora sim voce podera informar 0 ddd tele10n8 e au

documento com seu usuario e senha de aces so e clicando no batao confirma

disparara a consulta ao banco de dados retornando todas informacoes cadastrais de

endereyos telefones e documentos encontrados Caso nao exista nenhuma

informaltao no banco para os criterios de pesquisa inform ados retornara a

mensagem nenhum registro foi encontrado Todas as consultas ficarao gravadas

em um log de arquivo texto para um eventual controle de quem esta acessando 0

banco

Clicando no botao voltar ficara na tela anterior 0 ponto de partida e entao

podera efetuar outra consulta informando os campos descritos anteriormente Este

processo podera ser repetido inumeras vezes

Para encerrar 0 aplicativo basta clicar no leone x (fechar) do browse

Toda vez que for necessario validar os dados cadastrais telefones e

documentos basta para is so acessar esse portal

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

36

REFERENCIAS

ACHOUR Mehcir BETZ Friedheim DOVGAL Antony LOPES Nuno PHILIP

Olson RICHTER Georg SEGUY Damien VRANA Jakub PHP Manual Disponivel

em httpwwwphpnel Acesso em 10 out 2006

BAUDICH Alfred Reinold Tutorial Instalando Apache MySOL e PHP 5 no

Windows Disponivel em httpwwwphpbrasilcomarticlesarticlephpid847

Acesso em 28 ago 2006

BITTENCOURT David Formas de Manipular Dados de uma Busca no MySOL

Disponfvel em httpwwwphpbrasilcomarticlesarticlephpiid672 Acesso em 07

set 2006

COSTA italo Marcelo de O Artigo Validayao de Usuarios e Sessions no MySOL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid306 Acesso em 01

set 2006

ENDO Celso Uteis no MySOL Disponivel

emhttpwwwphpbrasilcomarticlesarticlephppagerRow3id584 Acessado em

29 ago 2006

Lerdford Rasmus Resumo do PHP Disponivel em

httpwwwgeocitiescomcantinhodophpminicursophpphpresumohtmt Acesso em

28 ago 2006

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

37

MACEDO Paulo M Cadastro Positivo e 0 desafio para empresas de TI

Disponivel em

httpwwwtimastercombrrevistaJartigosmain artigoaspcodigo-1053 Acessado

em 22 set 2006

MAlA Joao Prado Script Logger Simples Disponfvel em

httpwwwphpbrasilcomscriptsscriptphpid41 Acesso em 5 nov 2006

MASCARENHAS Diego Artigo Exibindo Consultas em Colunas no MySQL

Disponivel em httpwwwphpbrasilcomarticlesarticlephpid141 Acesso em 20

out 2006

RATIONAL The Software development company Visao Geral da Rational Unified

Process Disponivel em httpwwwwthreexcomnup Acesso em 30 ago 2006

SERASA Cadastro Comportamental da Serasa beneficia consumidor

Disponivel em httpwwwserasacombriguia177htm Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Sera sa I Acrefi Disponivel em

httpwwwbancohojecombrartigoaspArtigo-621 Acessado em 23 set 2006

SERASA Cadastro Positivo - Parceria Serasa I Acrefi Disponivel em

httpwwwserasacombrguiadoacoes Acessado em 29 set 2006

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

38

SERASA Credit Bureau e importante para ampliar 0 credito Disponivel em

httpJlwwwserasacombrlserasalegal35-set-04_m1htm Acessado em 24 set 2006

ZIMMERMANN Patricia Governo encaminha ao Congresso projeto de

cadastro

positiv~ de credito Disponlvel em

httpwww1folhauolcombrfolhadinheiroult91 u99917shtml Acessado em 25 set

2006

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

39

12 APENDICE 1 - DICIONARIO DO BANCO DE DADOS

o nome do banco de dados oj CEE (Confirmagao Elelronica de Enderegos) oj

composto pela tabela de usuarios que identificam e provem 0 acesso pela web

FIGURA 11 - DICIONARIO DE DADOS DA TABELA DE USUARIOS

Field Type Collation Attributes Null Default Extra

No

Action

[

[

[

[

usuNomc varchar(50) atinl_nvedish_ci

usuLogin varchar(20) latinl_swedish_ci

usuScnha varchar( 15) latin Ijwedish_ci

usuAtivo linyint(4)

No

No

Yes NULL

lIPXITill)lffiH

IlO1PXITillrnffiiil11lO1P X ITill)l ffiiiIT

a campo usuNome e 0 nome completo do usuario associado

Ocampo usuLogin e 0 nome para login solicitado para aceSSQ ao banco

Ocampo usuSenha e a senha correspondents aD login

Ocampo usuAtivo e urn controle para ativar 0 desativar 0 acesso ao banco

A tabela de telefones contem informacoes completas dos endereyos

documentos(CPF e CNPJ) e telefones dos clientes consultados pelos usuarios

associados consulta esta feita pela informayao do numero do telefone ou

documento

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

40

FIGURA 12 - DICIONARIO DE DADOS DA TABELA DE TELEFONES

Field Type Collation Attributes Null Default Extra Action- Tipo char(l) latill _swedish_ci No DDDDDDErJ- DoclImcnto char(15) latin J jwcdi_ci No DDDDDDCD- Nome varchar(50) laIiIlJ_~wedis_ci No DDDDDDCD- Logradou bullo char(4) latinl_nvedish_ci Yes NULL DDDDDDUl- Endcrc-o varchar(50) latinl_slVedfsh_ci No DDDDDDUl- Numero varchar(6) latin J _swedigt_ci Yes NULL DDDDDDUl- Complemento varchar(30) latill J_nvedish_ci Yes NULL DDDDDDrnl- Bairo varchar(30) latin J_nvedish_ci Yes NULL DDDDDDmrJ- Cep varchar(8) latinl_swedish_ci Yes NULL DDDDDD- Cidade varchar(30) latill J _wedislui Yes NULL DDDDDDmrJ- Estado char(2) latin J jwedish_ci Yes NULL DDDDDDCD- Ddd char(2) latin l_swedish_ci Yes NULL DDDDDDUl- Tclcfonc varchar(9) latin I jwedish_ci Yes NULL DDDDDDCDa campo tipo seu conteudo e uF pessoa fisica au J pessoa jurfdica

Ocampo documento e 0 CPF ou CNPJ dependendo do valor do campo tipo

o campo nome eontsm 0 nome da pessoa OU razao social da empresa

Ocampo logradouro S 0 prefixo do endereyo ex rua av esq pry

Ocampo enderelfo contsm a descrilfao completa do logradouro

Ocampo numero contsm 0 numero do enderelfo

Ocampo complemento tem informalfoes adicionais do enderelfo ex apto

Ocampo bairro contem 0 nome do bairro do enderelfo

Ocampo cep contsm 0 c6digo de enderelfamento postal usado nos correios

Ocampo cidade contem 0 nome da cidade

Ocampo estado contem a sigla da unidade da federa~ao brasileira ex PR

Ocampo ddd contsm 0 nmero da discagem direta a distancia ex 41

Ocampo telefone contem 0 numero do telefone ex 12345678

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

41

13 APENOICE 2 - TELAS E COOIGO FONTE

Listados a seguir as c6digos fontes do prototipo desenvolvido

FIGURA 13 - TELA DE ACESSO AO PORTAL CONFlRMAQAO DE ENDEREQO

C6digo a seguir do arquivo conectaphp I invocado pelos programas em

PHP

Database MySQL

altere as 4 linhas abaixo para sua configurayao

$db_host = localhost II servidor mysql

$db_user = root I usuario

$db_pass = I senha

$db_name = cee I database

nao alterar as linhas abaixo

$db_table = telefones 1 tabela de telefones da cee

mysql_select_db($db_name)

gt

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

42

C6digo do Programa Ioginphp responS8vel pel a conexao e pesquisa no

banco de dados

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 2611200621 26

funao Valida as campos DOD Telefone Documento Uswrio e Senha

Consiste digitos verificados dos documentos CPF e CNPJ

Faz a pesquisa no banco de dados cee

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1

include conectaphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot cria tabela S8 nao existe

middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot1mysql_query(CREATE TABLE IF NOT EXISTS usuarios(

usuNome varchar(50) NOT NULL

usuLogin varchar(20) NOT NULL

usuSenha varchar(15) NOT NULL

usuAtivo tinyint

PRIMARY KEY (usuLogin))

)

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

43

ubullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

pesquisa por telefone

function pesquisa_poUelefone($strDDD $strTelefone)(

$sql ~ SELECT bull FROM telefones WHERE DDD~$strDDD ANDTelefone~$strTelefone

$txt ~ Pesquisa pelo TELEFONE ~ ($strDDD) substr($strTelefoneO4-substr($strT elefone44

consulta_por_colunas($sql $txt

pesquisa per documento

function pesquisa_por_documento($strDocumento(

if (strlen($strDocumentolt~11)(

$txt Pesquisa pelo CPFsubstr($strDocumentoO3substr($strDocumento33

$txt ~ $txsubstr($strDocumento63-substr($strDocumentog2

$strDocu mento~OOO $strDocumento

else (

$txt Pesquisa pelosubstr($strDocumentoO2substr($strDocumento23)

CNPJ

$txt ~ $tx substr($strDocumento531 substr($strDocumentoB4-substr($strDocumento122

$sql SELECTdocumento$strDocumentoII

FROM telefones WHERE

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

consulta_por_colunas($sql $txt)

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddot exibe consulta pDr colunas

function consulta_por_colunas($sql $txt)(

II echo sql= $sqlltbrgt

$sql = mysqLquery ($sql)

$total = mysql_num_rows ($sql)

echo ltp align=centerlgt

II echo A consulta retornou $total registrosltpgt

echo lttable width=100 border=1gt

$colunas = 1

echo lth2gt$txt ltlh2gt

if ($totalgtO)

for ($i = 0 $i lt $total $i++)

if (($i$colunas)==O) (

echo ltltrgt

echo lttrgta

$dados = mysqUetch_array($sql)

$nome = $dados[nome]

II $Iogradouro = $dados[logradouro]

44

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

45

$endereco$dados[bairo]

$dados[logradouro] $dados[endereco]

$numero = $dados[numero] $dados[complemento]

II $complemento = $dados[complemento]

II $bairo = $dados[bairo]

$cep = $dados[cep]

$cidade = $dados[cidade]

$estado = $dados[estado]

$ddd = $dados[ddd]

$telefone = $dados[telefone]

$tipo = $dados[tipo]

$documento = $dados[documento]

echo lttdgtnome -------------------------------------- $nome -------------------------------------- ltltdgt

II echo lttdgt$logradouroltltdgt

echo bulllttdgtendere~o ------------------------------------- $endereco ------------------------------------- ltltdgt

echo ulttdgtnumero ------- $numero -------- ltltdgt

II echo lttdgt$complementoltltdgt

II echo lttdgt$bairoltltdgt

echo lttdgtcep ---------- $cep ---------- ltltdgt

echo lttdgtcidade ----------------------- $cidade ----------------------- ltltdgt

echo lttdgtuf --- $estado --- ltltdgt

echo lttdgtddd ---- $ddd ---- ltltdgt

echo ltldgttelefone ---------- $telefone ---------- ltltdgt

echo lttdgtP - $tipo - ltltdgt

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

46

echo ltldgtnrdo_CPFCNPJ ------------------- $documento ------------------- ltltdgt

else

echo lth1gtNenhum registro encontrado ltlh1gt

Consiste Campos (DDD Telefone Documento Login Senha)

function consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)

$erro=-1

if ($strDDD = )

for ($x=1 $xlt=strlen$strDDD) $x=$x+ 1)

$ch=substr($strDDD$x-11 )

if ((ord($chraquo=48 ampamp ord($ch)lt=57))

$erro=O

if (($erro))

echo lth1 gt000 deve conter somente numeros ltfh1 gt

if ($strTelefone = )

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

for ($x=1 $xlt=strlen($strTelefone) $x=$x+1)

$ch=substr($strTelefone$x-11 )

if (l(ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echo ulth1 gtTelefone deve canter somente numeros lt1h1 gt

if ($strDocumento = )

for ($x=1 $xlt=strlen($strDocumento) $x=$x+ 1)

$ch=substr($strDocumento$x-1 1)

if ((ord($chraquo=48 ampamp ord($ch)lt=57))(

$erro=O

if (($erro))

echomiddot lth1 gtOocumento deve canter somente numeros ltlh 1gt

if ($strLogin == )

$erro=O

echo lth1 gtUsuario nao informado ltlh1 gt

47

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

48

if ($strSenha == )(

$erro=O

echo lth1gtSenha naD informada lth1gt

if ($strDDD == ampamp $strTelefone == ampamp $strDocumento == )(

$erro=O

echo lth1gtlnforme 0 telefone au documento ou ambos(telefone +documento) ltlh1gt

return $erro

r-bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullCalcula CPF

function CalculaCPF($CampoNumero)(

$RecebeCPF=$CampoNumero

IIRetirar todos as caracteres que nac sejam 0-9

$s=

for ($x=1 $xlt=strlen($RecebeCPF) $x=$x+ 1)(

$ch=substr($RecebeCPF$x-11 )

if (ord($chraquo=48 ampamp ord($ch)lt=57)(

$s=$s$ch

$RecebeCPF=$s

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

49

if (strlen($RecebeCPF)=11)(

ltscript language=JavaScriptgt

lt--

windowalert(E obrigatorio 0 CPF com 11 digitos)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

if ($RecebeCPF==OOOOOOOOOOO)(

$then

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltiscriptgt

ltphp

return false

else (

$Numero[1]=intval(substr($RecebeCPF 1-11))

$Numero[2]=intval(substr($RecebeCPF2-1 1))

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

50

$Numero[3]=intval(substr($RecebeCPF3-1 1))

$Numero[4]=intval(substr($RecebeCPF4-11))

$Numero[5]=intval(substr($RecebeCPF5-1 1))

$Numero[6]=intval(substr($RecebeCPF6-11 ))

$Numero[7]=intval(substr($RecebeCPF7-11 ))

$Numero[S]=intval(substr($RecebeCPFS-11 ))

$Numero[9]=intval(substr($RecebeCPF9-11 ))

$Numero[1 O]=intval(substr($RecebeCPF 10-11))

$Numero[11]=intval(substr($RecebeCPF 11-11))

$soma= 1O$Numero[ 1]+9$Numero[2]+S$N umero[3]+ 7$Numero[ 4]+6$Numero[5]+5

$Numero[6]+4$Numero[7]+3$Numero[S]+2$Numero[9]

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma==1)

$resultado1=0

else (

$resultado1=11-$soma

if ($resultado1==$Numero[10])

$soma=$Numero[1111 +$Numero[2]1 0+$Numero[319+$Numero[41S+$Numero[517+$Numero[616+$Numero[715+

$Numero[S]4+$Numero[913+$Numero[1012

$soma=$soma-(11(intval($soma11 )))

if ($soma==O II $soma== 1)(

$resultado2=0

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

51

else

$resultado2=11-$soma

if ($resultado2==$Numero[11 D

return true

) else (

7gt

ltscript language=JavaScriptgt

lt--

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

windowalert(CPF Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

lt7php

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

return false

calcula CNPJ

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull j

function CalculaCNPJ($CampoNumero)

$RecebeCNPJ=$(CampoNumero

$s=

for ($x=1 $xlt=strlen($RecebeCNPJ) $x=$x+ 1)

$ch=substr($RecebeCNPJ$x-11)

if (ord($chraquo=48 ampamp ord($ch)lt=S7)

$s=$s$ch

$RecebeCNPJ=$s

if (strlen($RecebeCNPJ)=14)(

gt

ltscript language= JavaScriptgt

lt--

windowalert(E obrigatorio 0 CNPJ com 14 digitos)

windowopen(lndexhtml_parent)

52

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

53

11--gt

ltscriptgt

ltphp

return false

else (

if ($RecebeCNPJ~~OOOOOOOOOOOOOO)

$then

gt

ltscript languageJavaScriptgt

ltI

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

return false

else (

$Numero[1J~intval(substr($RecebeCNPJ 1-11))

$Numero[2Hntval(substr($RecebeCNPJ2-1 1))

$Numero[3J~intval(substr($RecebeCNPJ3-1 1))

$Numero[4J~intval(substr($RecebeCNPJ4-1 1))

$Numero[51~intval(substr($RecebeCNPJ5-1 1))

$Numero[6Hntval(substr($RecebeCNPJ6-11 ))

$Numero[7J~intval(substr($RecebeCNPJ7-1 1)

$Numero[8)~intval(substr($RecebeCNPJ8-1 1))

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

54

$Numero[9Hntval(substr($RecebeCNPJ9-1 1 I)

$Numero[1 O]=intval(substr($RecebeCNPJ 10-11))

$Numero[11]=intval(substr($RecebeCNPJ 11-11))

$Numero[12]=intval(substr($RecebeCNPJ 12-11))

$Numero[13]=intval(substr($RecebeCNPJ 13-11 I)

$Numero[14]=intval(substr($RecebeCNPJ 14-11))

$soma=$Numero[1]5+$Numero[2]-4+$Numero[3]3+$Numero[4]2+$Numero[5]-9+$Numero[6]S+$Numero[7]7 +

$Numero[S]6+$Numero[9]5+$Numero[1 0]4+$Numero[11]3+$Numero[12]2

$soma=$soma-(11(intval($somai11 )))

if ($soma==O II $soma==1)

$resultado1 =0

else

$resultad01 =11-$soma

if ($resultad01==$Numero[13]) (

$soma=$Numero[1]6+$Numero[2]5+$Numero[3]4+$Numero[4]3+$Numero[5]2+$Numero[6]9+

$N umero[7]S+$Numero[S]7 +$Numero[9]6+$N umero[1 0] 5+$N umero[ 11] 4+$Numero[12]3+$Numero[13]2

$soma=$soma-11intval($somai11 )))

if ($soma==O II $soma==1)

$resultad02=0

else

$resultad02=11-$soma

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

55

if ($resultado2==$Numero[14]) (

return true

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

windowopen(lndexhtml_parent)

--gt

ltiscriptgt

ltphp

return false

) else (

gt

ltscript language=JavaScriptgt

lt--

windowalert(CNPJ Invalido)

window open(lndexhtml _parent)

--gt

ltiscriptgt

ltphp

return false

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

56

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

grava log de pesquisa

function grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)(

II grava log

$arquivo = Iogtxt

$data = date(dmlY His)

Sip = $_SERVER[REMOTE_ADDR]

$host = getHostByAddr($REMOTE_ADDR)

$pagina = $_SERVER[PHP _SELF]

$browser = $_SERVER[HTTP _USER_AGENT]

$fp = fopen($arquivo a)

fwrite($fpData $data I DDD $strDDD I Telefone $strTelefone IDocumento $strDocumento I Usuario $strLogin liP Sip I host $host I PaginaAcessada $pagina I Navegador $browser n)

fclose($fp)

Executa 0 metodo post (inicia a execucao do programa)

bullbullbull1tbullbullbullbullbullbullbullbull1

if (getenv(REQUEST_METHOD) == POST) (

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

57

II dados passados pelo form

$strLogin = $_POST[usuLogin]

$strSenha = $_POST[usuSenha]

$strDDD = $_POST[txtDDD]

$strTelefone = $_POST[txtTelefone]

$strDocumento = $_POST[txtDocumento]

IIadministrador cadastra usuario

if ($strLogin == admin ampamp $strSenha == admin)(

gt

ltscript languageJavaScriptgt

windowopen(Cadastra_Usuarioshtml_parent)

11--gt

ltscriptgt

ltphp

else

IIconsiste campos

if (consiste_campos($strDDD $strTelefone $strDocumento $strLogin$strSenha)))(

gt

ltscript language=JavaScriptgt

lt--

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

windawalert(Dadas Infarmadas estaa Invalidos)

windawapen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else

IIbusca 0 registro de usuario na tabela

$cripSenha = md5($strSenha)

$sql SELECT FROM usuariasusuLagin=$strLagin AND usuSenha=$strSenha

$resultada=mysqLquery($sql)

$Iinhas = mysql_num_raws ($resultada)

$dadas = mysqUetch_array($resultada)

$strAtiva = $dadas[usuAtiva]

II se encantradas

if ($Iinhas gt 0 ampamp $strAtiva == 1 ) (

II cansiste dacumentas CPF au CNPJ

$cansistencia_valida=-1

if ($strDacumenta = )(

if (strlen($strDacumenta)lt=11)(

II cansiste CPF

$cansistencia_valida=CalculaCPF($strDacumenta)

58

WHERE

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

59

else

I consiste CNPJ

$consistencia_valida=CalculaCNPJ($strDocumento)

if ($consistencia_valida)

I busca resgistros por telefone

if ($strDDD = ampamp $strTelefone = )

pesquisa_poUelefone($strDDD $strTelefone)

IIbusca registros por documento

if ($strDocumento = )

pesquisa_por_documento($strDocumento

II grava log de pesquisa

grava_log_pesquisa($strDDD $strTelefone $strDocumento$strLogin $strSenha)

else

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

60

I usuario nao esta ativo

if ($strAtivo == O)

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao esta Ativo)

windowopen(lndexhtml_parent)

11--gt

ltscriptgt

ltphp

else (

IIusuario nao encontrado

gt

ltscript language=JavaScriptgt

lt--

windowalert(Usuario Nao Identificado)

windowopen(lndexhtml_parent)

11--gt

ltIscriptgt

ltphp

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

61

mysq1_close($conexao)

gt

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

FIGURA 14 - TELA DE CADASTRO DE USUARIOS ASSOCIADOS

C6digo fonte do arquivo cadastra_usuariosphpn

ltphp

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddot middot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddot programa loginphp

autor Marcos Antonio Wilceki

data 26112006 21 26

funyao Cadastra usuarios para 0 banco de dados cee

bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullmiddot1

include conectaphp

1 bullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbullbull

Consiste Campos (Nome USU1riO Senha)

62

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

function cansisteJampos($usuName $usuLagin $usuSenha)(

$erro~-1

if ($usuName ~~ )

$erra~O

echo lth1gtNome nao informado ltfh1gtM

if ($usuLagin ~~ )

$erra~O

echo Mlth1gtUsuario nao informado ltlh1gt

if ($usuSenha ~~ )

$erra~O

echo lth1gtSenha nao inform ada ltfh1gt

if ($usuSenha ~ )

$conta_numeroO

for ($x~1 $xlt~strlen($usuSenha) $x4x+ 1)

$ch~substr($usuSenha$x-1 1)

if (ord($chraquo~48 ampamp ard($ch)lt~57)

$conta_numero$conta_numero + 1

$canta_letra~O

for ($x~1 $xlt~strlen($usuSenha) $x~$x+ 1)

63

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

64

$ch=substr($usuSenha$x-1 1)

if ((ord($chraquo=4B ampamp ord($ch)lt=S7))

$tamanho_senha=strlen($usuSenha)

$erro=O

echo ~lth1gtSenha deve conter numeros e letras com no minima 6digitosltlh1 gt

return $erro

rmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot middotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddotmiddot Executa a metoda post (inicia a execucao do programa)

if (getenv(REQUEST_METHOO) == POST) (

IIconsiste campos

if ((consiste_campos($_POST[usuNome]$_POSTrusuSenha])))

$_POST[usuLogin]

7gt

ltscript language=JavaScriptgt

d--

windowalert(Oados Informados estao Invalidos)

windowopen(Cadastra_Usuarioshtml_parent)

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

65

1--gt

ltscriptgt

ltphp

) else (

$sql SELECTusuLogin=$_POST[usuLogin] AND

FROM usuaries WHERE

$sql = $sqlusuSenha=$_POST[usuSenha]

$resultado=mysql_query($sql)

$Iinhas = mysqLnum_rows ($resultado)

if ($Iinhas gt 0) (

ltscript languageJavaScriptgt

lt--

windowalert(Usuario ja Cadastrado)

windowopen(Cadastra_Usuarioshtml_parent)

1--gt

ltscriptgt

ltphp

) else (

I insere 0 registro pegando a senha criptograiada no $cripSenha

I encripta a senha para ser cadastrada na tabela

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

66

$cripSenha = md5(LPOST[usuSenha])

$sql = INSERT INTO usuarios (usuNome usuLogin usuSenhausuAtivo)

$sql$_POST[usuLoginj

$sql = $sql LPOST[usuSenha] LPOST[usuAtivo])

$sqlVALUES Cmiddot$_POST[usuNome]

mysqLquery($sql)

gt

ltscriptgt

alert(Usmirio cadastrado com Sucesso)

windowopen(Cadastra_Usuarioshtml_parent)

ltlscriptgt

ltphp

gt

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

67

FIGURA 15 - TELA DE CARGA DOS ARQUIVOS TEXTO PARA BASE DE DADOS

Iniciaremos 0 carregamento da base de dades dos arqwllos texto para 0 banco de cladosIra demorar muito e nenhuma mensagem apareceraNao suspenda a operalYao Nao clique de novo no linkEspere linalizar0 carregamentoClick no linkpara cometar 0 serviro

CLICK AQUI PAM INICIAR AGORAI E A G U A R DE

Listado a seguir 0 c6digo do arquivo inclui_arquivosphp responsavel pela

carga da base de dados

ltphp

Database MySQL

conectaphp

naD alterar as linhas abaixo

$db_table = telefones II tabela de telefones da cee

$conexao=mysqLconnect($db_host$db_user$db_pass)

mysqLselect_db($db_name)

$tabela = array($db_tabe)

$flseqarray(01 02 03 04 05 06 07 OS 0910 11 12 13 14 15 16 17 1S 19 20 21 22 23 24 25 2627 2S 29 30 31 32 33 34353637)

if(isset(LGET[tb])) (

$tb =0

echo Iniciaremos 0 carregamento da base de dados dos arquivostexto para 0 banco de dadosltbrgt

echo Ira demorar muito e nenhuma mensagem apareceraltbrgt

echo Nao suspenda a operacao Nao clique de novo no linkltbrgtN

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

68

echo Espere finalizar 0 carregamentoltbrgt

echo Click no link para come9ar 0 servi90ltbrgtltbrgt

echo lta href=$_SERVER[PHP _SELF]tb=$tbgtCLlCK AQUIPARA INICIAR AGORAkagtampnbspampnbspampnbspEampnbspampnbspampnbspA G U A RDE

dieO

if(issel($_GET[lb])) ( $lb=$_GET[lb] ] else ( $lb=O ] II table sequence

if(isset($_GET[fs])) ($fs=LGET[fs] ) else ( $fs=O ) II file sequence

if(issel($_GET[erro])) ( $erro=$_GET[erro) else ( $erro=O ) II conladorErros

if(issel($_GET[linha])) ($linha=$_GET[linha] ) else ( $linha=O ) I lin has

if($lb==sizeof($labela)) (

echo ltbrgt Terrninado Inserido no banco de dadosltbrgtltbrgt

I if($erro==O) (

echo ltbrgtLinhas $Iinha

I ) else (

echo UltbrgtErrors bull$erro

II

dieO

I cria tabela S9 nao existe

mysqLquery(CREATE TABLE IF NOT EXISTS $labela[$lbJ(

lipo char(01) NOT NULL

documenlo char(1S) NOT NULL

nome varchar(SO) NOT NULL

logradouro char(04)

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

69

endereco varchar(50) NOT NULL

numero varchar(06)

complemento varchar(30)

bairro varchar(30)

cep varchar(08)

cidade varchar(30)

estado char(02)

ddd char(02)

telefone varchar(09)

PRIMARY KEY (ddd telefone)

))

$arq~$f1seq[$fs]

if($handle ~ fopen($arq~))

echo NNao foi possfveller 0 arquivon

else

while (feof($handle)) (

$buffer ~ fgets($handle 4096)

$campos~explode($buffer)

$campos[O] ~ TRIM($campos[O])

$campos[1] ~ TRIM($campos[1])

$campos[2] ~ TRIM($campos[2])

$campos[3] ~ TRIM($campos[3])

$campos[4] ~ TRIM($campos[4])

$campos[5] ~ TRIM($campos[5])

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

70

$campos[6] TRIM($campos[6J)

$campos[7] TRIM($campos[7])

$campos[8] TRIM($campos[8J)

$campos[9] TRIM($campos[9J)

$campos[10] TRIM($campos[10])

$campos[ll] TRIM($campos[ll J)

$campos[12] TRIM($campos[12J)

I ECHO ltP ALlGNCENTERgtn

II ECHO Exportando Telelone-gt $campos[ll] -$campos[12]ltBRgt

I ECHO ltlPgtn

$sql INSERT INTO $tabela[$tb] VALUES($campos[O]$campos[l] $campos[2] $campos[3] $campos[4] $campos[S]$campos[6] $campos[7]$campos[8] $campos[9] $campos[l 0] $campos[ll]$campos[12])

il(mysqLquery($sql)) (

$linha$linha+ 1

else

$erro=$erro+ 1

Iclose ($handle)

$Is $ls+1

il($lsgt36) $lsO $tb$tb+ 1

II recursive para nao exceder tempe limite de execusae

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71

header(locationLSERVER[PHP _SELF]tb=$tbampfs=$fsamperro=$erroamplinha=$linha)

71