Upload
tranxuyen
View
234
Download
5
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