Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Análise de um Script PHP com Funções e Código para Geração de Estatísticas, Notas de estudo de Informática

Este documento analisa um script php com diversas funções e código destinado à geração de estatísticas. O script permite obter estatísticas sobre visualizações de páginas, visitas, navegadores e sistemas operativos, bem como fornecer resumos em tabelas e gráficos. Além disso, é possível selecionar o intervalo de datas para geração das estatísticas. O script inclui funções para validação e alteração de formatos de data, obtenção de datas inicial e final, geração de formulários para seleção de datas e conexão com um banco de dados.

Tipologia: Notas de estudo

2011

Compartilhado em 06/01/2011

samuell-ralph-de-almeida-ramos-11
samuell-ralph-de-almeida-ramos-11 🇧🇷

5

(2)

7 documentos

1 / 52

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34

Pré-visualização parcial do texto

Baixe Análise de um Script PHP com Funções e Código para Geração de Estatísticas e outras Notas de estudo em PDF para Informática, somente na Docsity!

e ditorial

índice

3 notícias

4 te m a de capa

10 a program ar

30 s e gurança

34 e le ctrónica

39 tutorial

45 gnu/linux

48 anális e s

49 inte rne t

50 blue s cre e n

51 com unidade

A Eq u ipa

É dito q ue , para além de te r um a boa ide ia, te r um a boa e q uipa é e s s e ncialpara obte r s uce s s o num proje cto. Com e çar e te ntar acabar um proje cto s ozinh o é, m uitas ve ze s , s uicídio para o próprio proje cto. M e s m o q ue as nos s as capacidade s e s te jam à altura, é s e m pre ne ce s s ário outros pontos de vis ta, opiniõe s , outras s oluçõe s para um de te rm inado proble m a e , principalm e nte , apoio e m otivação. A probabilidade de um proje cto ficar a m e io, q ue r por de s inte re s s e ou falta de te m po, é m uito m aior q uando e s tam os s ozinh os à volta de le.

M uitas ve ze s a ide ia ne m é o principaljá q ue ne m s e m pre a ide ia q ue com e çam os é a final. Exis te m m uitos cas os de s uce s s o actualm e nte q ue de m ons tram is s o m e s m o. Ainda m ais , um a boa e q uipa cons e gue s e m pre criar boas ide ias q uando é pre cis o.

O tam anh o das e q uipas tam bém é m uitas ve ze s dis cutido. Na m inh a opinião, para com e çar do ze ro o m e lh or é m e s m o com e çar com um grupo re duzido. Todos os factore s "e xtra- proje cto" com o a com unicação e organização aum e ntam e xpone ncialm e nte com o núm e ro de pe s s oas e nvolvidas no proje cto. M as irá ch e gar o te m po e m q ue s e rão pre cis as m ais pe s s oas. M as , e m ve z de atirar m ais ge nte para um proble m a, m uitas ve ze s é m ais útildividir a e q uipa e m vários grupos com dife re nte s áre as de foco. E o principal: re s pe itar s e m pre o trabalh o e as opiniõe s de todos os m e m bros da e q uipa.

e q u ipa PR O G R A M A R

adm inis tração Rui M aia D avid Pintas s ilgo

coorde nador S érgio S antos

coorde nador adjunto M igue lPais

e ditor Joe lRam os

re dacção Fábio Pe dros a Bruno Vaz Fábio Corre ia Pe dro Te ixe ira R icardo Roch a S andro Pinto M igue lW ah nan M arco S ilva Jos é O live ira

colaboradore s Rui G onçalve s D anie lCorre ia

contacto re vis taprogram ar @ portugal-a-program ar.org

w e bs ite w w w .re vis ta-program ar.info Sérgio Sant

os

Sérgio Sant

os

te m a de capa

W indow s Vis ta

para

Program adore s

Introdução

W indow s Vis ta (antigo code nam e : Longh orn) é o m ais re ce nte lançam e nto da M icros oft, m ais de 5 anos após o s e u s uce s s or W indow s XP, contém ce nte nas de novas caracte rís ticas , e ntre as q uais , um a nova inte rface gráfica, m e lh orias de pe s q uis a, fe rram e ntas m ultim édia, áudio, s e gurança, … e principalm e nte no as s unto q ue nos inte re s s a (plataform a de de s e nvolvim e nto), a nova ve rs ão da plataform a .NET.

Juntam e nte com o lançam e nto do s is te m a, ve m tam bém inte grada a nova ve rs ão da Plataform a .NET 3.0 (antigo code nam e : W inFX).

Bas e ada na ve rs ão 2.0, a nova ve rs ão da plataform a traz novas APIs , com o:

  • W indow s Pre s e ntation

Foundation (antigo Avalon)

s im plifica a cons trução de aplicaçõe s clie nte ricas , um a ve z q ue facilita a inte gração de m ultim édia, docum e ntos e UI. O W PF introduz um s is te m a avançado de lay outs , fácilinte gração de m ultim édia e gráficos ve ctoriais e 3D , facilitando ainda a colaboração e ntre program adore s e

API, de Application

Program m ing Inte rface (ou

Inte rface de Program ação

de Aplicativos ) é um conjunto

de rotinas e padrõe s e s tabe le cidos por um s oftw are para utilização das s uas funcionalidade s por program as aplicativos , is to é: program as q ue não q ue re m e nvolve r-s e e m de talh e s da im ple m e ntação do s oftw are , m as ape nas us ar os s e us s e rviços.

de s igne rs. Juntam e nte com e s ta te cnologia, a M icros oft introduziu um a nova linguage m de m arcação bas e ada e m XM L, ch am ada XAM L.

  • W indow s Com m unication Foundation

(W CF) forne ce um a Fram e w ork única para

a cons trução rápida de aplicaçõe s s e guras , fiáve is e orie ntadas a s e rviços.

  • W indow s W ork flow

Foundation (W W F) ofe re ce

tare fas de autom ação e trans acçõe s inte gradas utilizando gráficos de fluxo. É um m ode lo de program ação, m otor e fe rram e ntas para pe rm itir aplicaçõe s bas e adas e m fluxo e m W indow s.

  • W indow s CardSpace

(W CS) é um com pone nte

q ue guarda ide ntidade s digitais dum a pe s s oa e m s e gurança, e ofe re ce um a inte rface unificada para e s colh e r um a ide ntidade para um a particular trans acção, tal com o o login de um w e bs ite.

te m a de capa

Es tas te cnologias tam bém e s tão dis poníve is para W indow s XPe W indow s Se rve r 2003. Exis te m tam bém novas APIs im portante s no núcle o do s is te m a ope rativo, inclus ive o re novado inte rface áudio, re de , im pre s s ão e víde o. Alte raçõe s na infra-e s trutura de s e gurança, m e lh oram e ntos na dis tribuição e ins talação de aplicação (“Click O nce ” e W indow s Ins talle r 4.0), novo m ode lo de de s e nvolvim e nto de drive rs (W indow s D rive r Foundation), Trans action NTFS, de s e nvolvim e nto na API de com putação m óve l(ge s tão de e ne rgia, Suporte Table t PC Ink , Side Sh ow ) e grande s de s e nvolvim e ntos dos s ubs is te m as com o W inlogon e CAPI.

.NET 3.0 e os novos

s ubs is te m as Inicialm e nte o Longh orn, agora ch am ado W indow s Vis ta, e ra um proje cto ainda m ais am bicios o onde a nova Fram e w ork iria s ubs tituir a actual API bas e dos s is te m as ope rativos W indow s (W in32) e alte rava o am bie nte de de s e nvolvim e nto e m W indow s para s e m pre , utilizando código ge rido (m anage d code ). D e facto e s ta ide ia foi abandonada algure s durante o de s e nvolvim e nto do s is te m a, m as no e ntanto e s ta nova Fram e w ork continua a s e r um a grande m udança.

Porq uê um a nova API? Parte da razão, é s e m dúvida a ve locidade a q ue as te cnologias H ardw are e s tão a s e r de s e nvolvidas. O s com putadore s pe s s oais já com e çam a utilizar dis cos rígidos com capacidade s e norm e s , m onitore s de alta- re s olução, ve locidade s de proce s s am e nto e norm e s , e tc. Cone ctividade é tam bém de grande inte re s s e , juntam e nte com a ne ce s s idade de m e lh or s e gurança. Standards com o o RSS e Se rviços W e b e s tão a ganh ar adopção e a re s olve r proble m as de inte gração. O utra razão é o le m a “W rite once , run e ve ry w h e re ”, bas tante utilizada para de s cre ve r e s ta plataform a, vis to q ue a principalfalh a q ue a API W in32 (m ais de 12 anos de e xis tência) acarre tava e ra a ne ce s s idade de m ante r com patibilidade e ntre alte raçõe s s e m afe ctar as aplicaçõe s q ue a utilizavam.

Com e s ta “nova” Fram e w ork e s te proble m a de s apare ce , pois é garantida 100% com patibilidade. Até à ve rs ão 2.0 da Fram e w ork , q ualq ue r aplicação de s e nvolvida utilizando a plataform a corria e s táve l e pe rfe itam e nte e m s is te m as W indow s 9 8 e s upe riore s. Com a nova ve rs ão (3.0) ape nas o W indow s XP SP2 e s upe riore s a s uportam. Exis te m outras m e lh orias na utilização de s ta Fram e w ork , m as não é do âm bito de s te artigo.

W in32 vs. NET

Com o é h abitualnos s is te m as ope rativos , um grande e s forço é fe ito para m ante r com patibilidade nas aplicaçõe s , com o a e xe cução de aplicaçõe s W in32 e m W indow s Vis ta. Algum as aplicaçõe s pode m não tirar vantage m das novas APIs incluídas nas novas ve rs õe s da Fram e w ork , m as de ve m continuar a trabalh ar igualm e nte às ve rs õe s ante riore s do SO .Por outro lado, a M icros oft garante continuar a adicionar APIs ge ridas (m anage d APIs ) à Fram e w ork , o q ue pode não aconte ce r na W in32.

Cabe aos program adore s e s colh e re m e ntre continuar a utilizar a API antiga, adaptar as aplicaçõe s para utilizar as novas APIs ge ridas (m anage d APIs ) utilizando código de adaptação ou “s im ple s m e nte ” re e s cre ve r a aplicação utilizando código ge rido (m anage d code ).Com o é óbvio e xis te m grande s m e lh orias de produtividade , s im plicidade e com patibilidade e m faze r a pas s age m para código ge rido (m anage d code ).

O utra das vantage ns na utilização de código ge rido é o be ne fício de pode r utilizar várias linguage ns , q ue no cas o da Fram e w ork da M icros oft actualm e nte corre s ponde ao C+ + , C# , VB.NET, ASP.NET e J#. Com novas ve rs õe s da Fram e w ork s ão im ple m e ntadas novas alte raçõe s nas linguage ns , talcom o outras fe rram e ntas. É tam bém pos s íve lutilizar outras linguage ns com a Fram e w ork , com o o IronPy th on (im ple m e ntação do Py th on) e Ruby .NET (im ple m e ntação do Ruby ).

te m a de capa

Exis te m m uitas fe rram e ntas para e xe cução e criação de Xam l. Juntam e nte com o Vis ual Studio 2005 vêm o Xam lPad q ue pe rm ite introduzir código Xam l e ve r o re s ultado im e diato. Pode tam bém ape nas guardar o código num fich e iro de e xte ns ão .xam le abrir no Inte rne t Explore r (ne ce s s ita do .NET 3.0 ins talado).

Com o o W PF introduz tantos novos conce itos , não é prático de s e nvolve r código e de s ign s e m novas fe rram e ntas apropriadas. D e s de o lançam e nto do Vis ualStudio 2005 q ue e s te juntam e nte com a e xte ns ão para .NET 3. ofe re ce um bom am bie nte para cons truir aplicaçõe s W PF, com novos tipos de proje ctos e e ditore s vis uais e s pe cíficos para XAM L. Com a nova ve rs ão Vis ual Studio “O rcas ” (ainda e m de s e nvolvim e nto) e s te s uporte ainda s e rá am brangido.

Exis te m ainda outras fe rram e ntas profis s ionais para criação de conte údo W PF, algum as de s tas tam bém da M icros oft.

M icros oft Expre s s ion Ble nd é um a das principais fe rram e ntas utilizadas para e s te s form atos , principalm e nte porq ue partilh a o m e s m o s is te m a de fich e iros q ue os proje ctos do Vis ualStudio, facilitando o trabalh o e m s im ultâne o no código e de s ign.

M icros oft Expre s s ion D ata tam bém é outra fe rram e nta M icros oft q ue pe rm ite criação de im age ns bitm ap e ve ctoriais com e xportação para XAM L.

M uitos pe ns am q ue o W PF de pe nde do XAM L, m as is to não é ve rdade. Aliás , tudo o q ue s e cons trói utilizando XAM L pode s e r fe ito e m q ualq ue r linguage m .NET. Até porq ue o XAM Lnão é ape nas utilizado pe lo W PF, é tam bém por outras te cnologias (W indow s W ork flow Foundation [W W F] por e xe m plo).

D as inúm e ras vantage ns e m utilizar e s tas páginas XAM L, q ue bas icam e nte s ão fich e iros XM L, um a das principais vantage ns de s te proce s s o é a s e paração e ntre o de s ign do inte rface gráfico e o código de fundo. Es ta s e paração ajuda cons ide ralm e nte q uando a e q uipa ou pe s s oa q ue faz o de s ign não é a m e s m a q ue a as s ociada com a program ação.Por e xe m plo, a s e guinte im age m m os tra a dife re nça e ntre C# /VB.NET/XAM L na cons trução de um s im ple s botão:

Re pare q ue por e xe m plo, o código Xam l não ne ce s s ita do Ligh tBlue de clarado com o m e m bro de Colors , é re conh e cido autom aticam e nte. Utilizando e s te e xe m plo dado, pode m os tam bém m os trar a de claração de e ve ntos.

Ao adicionar o atributo Click =”button_click ” na tag Button no código XAM L s e ria o e q uivale nte a adicionar um e ve nto, q ue e xe cutaria o m étodo button_click s e m pre q ue o utilizador clicas s e no botão criado. Es ta adição, im plicaria a ne ce s s idade de juntar o XAM L com um a linguage m proce dim e ntal.NET.

te m a de capa

Silve rligh t

Conh e cido por W PF/E (W indow s Pre s e ntation Foundation/Eve ry w h e re ), Silve rligh t é um a ve rs ão gratuita e re duzida da plataform a W PF com patíve lcom vários brow s e rs e vários s is te m as ope rativos , garantindo as s im a com patibilidade de aplicaçõe s W PF para Brow s e r e m grande parte dos s is te m as e xis te nte s. Actualm e nte já s uporta W indow s , Linux e M ac.

Em com pe tição dire cta ao Flas h play e r da Adobe , e s te plug-in traz o m undo m ultim édia do W PFao brow s e r.

W indow s Com m unication

Foundation

W CF é o núcle o das aplicaçõe s com com unicaçõe s orie ntadas a s e rviços para a plataform a W indow s. Es tá cons truído no topo dos s tandards de s e rviços w e b e e s tá de s e nh ado para as ne ce s s idade s do s e rvice - orie nte d arch ite cture (SO A) e s oftw are as a s e rvice (SA AS). A filos ofia por de trás de s te s é q ue o s oftw are de ve s e r e s crito utilizando inte rface s q ue com unicam utilizando protocolos s tandard.

Se rviços w e b foram o ínicio de s ta h is tória, onde lógica dos ne gócios é im ple m e ntada e m puro te xto, bas e ado e m XM L, utilizando um a linguage m ch am ada W e b Se rvice D e s cription Language (W SD L). Program adore s pode m e ntão utilizar um a m e ns age m num form ato ch am ado Sim ple O bje ct Acce s s Protocol (SO AP) q ue utiliza o XM L, para com unicar com o s e rviço. No e ntanto s e rviços w e b e s tão lim itados e não s uportam algum as funcionalidade s com o s e gurança, re ntabilidade , e trans acçõe s s e m com plicadas adiçõe s no m ínim o.

W CF e s tá de s e nh ado para pe rm itir tudo is to e m uito m ais ;ofe re ce um a API q ue pe rm ite im ple m e ntar s e rviços s e m pre ocupação com e s te s de talh e s , libe rtando te m po útil para m e lh or conce ntração na lógica do ne gócio.

W CF ofe re ce o m ode lo orie ntado a s e rviço, cons truído no topo da plataform a .NET e unifica as dife re nte s capacidade s de s is te m as dis tribuídos , incluindo s e rviços w e b e s táticos , m e ns age ns , trans acçõe s e re m oting num a única API.

W CF ofe re ce um a nova nam e s pace , ch am ada Sy s te m .Se rvice M ode l, q ue forne ce as fe rram e ntas para alguns dos ce nários utilizados e m aplicaçõe s dis tribuídas :

  • M e ns age ns , num único s e ntido ou am bos
  • Ch am adas a proce dim e ntos re m otos
  • Callback s
  • Se s s õe s
  • Se gurança
  • Trans acçõe s
  • e tc

W CF é um a e norm e e im portante API, o le itor s e inte re s s ado já pode e ncontrar alguns livros q ue cobre m o as s unto (ne nh um e m português actualm e nte ).

W indow s W ork flow Foundation

W W F é m ais um a das novas te cnologias incluída no .NET 3.0 e pe rm ite de finir, e xe cutar e ge rir fluxos de trabalh o. Utilizando um fluxo de trabalh o pode m os de clarar um program a com o um a s érie de pas s os com pos tos de actividade s. Es tas actividade s pode m s e r facilm e nte criadas por código, m arcação ou através de outras actividade s criadas.

Exis te m inúm e ras vantage ns e m utilizar e s te s fluxos de trabalh o ao invés de e s cre ve r código. Em prim e iro lugar, para program adore s , fluxos de trabalh o s ão m ais fáce is de e nte nde r do q ue código, porq ue fluxos de trabalh o ofe re ce m um a re pre s e ntação do proce s s o. Cons e q ue nte m e nte , facilita o trabalh o q uando o program ador pre cis a de m odificar o fluxo as s ociado a um proce s s o, q ue ge ralm e nte não é nada fácilpara o program ador m odificar no código.

a program ar

Es tatís ticas e m PH P

2ª Parte

D e pois de um a prim e ira parte na e dição ante rior de s ta re vis ta, o artigo s obre a criação de e s tatís ticas e m PH Ps e rá concluído ne s ta e dição.

Tabe las Re s um o

A próxim a função irá ge rar um a tabe la de 3 colunas com os re s pe ctivos dados re s um o pre e nch idos. No e ntanto e xis te m ais 3 tabe las re s um o no Script Com ple to q ue pe rm ite ge rar re s um os com inform ação dife re nte.

function getCountrys ( $beginDate , $endDate ) { include ( "connection.php" ); mysql_select_db ( $database , $connection ); $sql_countrys = "SELECT cod_pais, nome_pais, count(nome_pais) as total FROM estatisticas WHERE data >= ".changeDate($beginDate)."' AND data <= '".changeDate($endDate)."' GROUP BY cod_pais ORDER BY total DESC";

$countrys = mysql_query($sql_countrys,$connection) or die(mysql_error());

while($row_countrys = mysql_fetch_array ($countrys , MYSQL_ASSOC ) ) { $total_hits += $row_countrys[ 'total' ]; }

$countrys = mysql_query($sql_countrys,$connection) or die(mysql_error());

**$table = "

**

a program ar

**

";**

while($row_countrys = mysql_fetch_array($countrys , MYSQL_ASSOC ) ) {

**$table .= "

"; }**

**$table .= "

Ranking de Visitas por País
Código País Nome País Total Páginas Visitadas % (Relevância)

".$row_countrys[ 'cod_pais' ]." ".$row_countrys[ 'nome_pais' ]." ".$row_countrys[ 'total' ]." ".(round((($row_countrys['total'] / $total_hits)*100),2))." %
  Total: ".$total_hits."  
";**

return $table;

} // FIM DE "getCountrys"

D e s ta form a te rm ina-s e a Clas s e , e m bora o fich e iro 's tatis tics .ph p' não e s te ja finalizado, já q ue vai s e r ace dido dire ctam e nte pe la Clas s e Ch arts para a ge ração dos gráficos. H ave rá q ue pre parar o fich e iro para e s s as ope raçõe s.

Se guidam e nte à Clas s e s e rá introduzido o s e guinte código:

a program ar

<?php

function date_validation ( $date_to_check ) { $valid = true;

if ( ( substr_count ( $date_to_check , "/" ) ) != 2 ) { $valid = false; }

Para ve rificar s e um a data é válida irá proce de r a um a s érie de te s te s , o prim e iro irá ve rificar s e a data introduzida te m ape nas duas barras “/”. Cas o te nh a m ais ou m e nos q ue 2 barras , e ntão e s tam os pe rante um a data inválida.

else { if((ereg("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})",$date_to_check, $separated_date))){ $day = $separated_date[ 1 ]; // atribuicao do dia $month = $separated_date[ 2 ]; // atribuicao do mes $year = $separated_date[ 3 ]; // atribuicao do ano

No 2º te s te ve rifica-s e s e a data contém ape nas núm e ros com o form ato de ‘D D -M M -A A A A’. Cas o s e ja um a condição ve rdade ira, s e para a data e m 3 te rm os , s e ndo e le s : o dia, o m ês e o ano.

if ( ( $year < 1900 ) || ( $year > 2200 ) ) { $valid = false; } elseif ( $month > 12 ) { $valid = false; }

Se o ano fôr infe rior a 19 00 ou s upe rior a 2200, ou o m ês fôr s upe rior a 12 e s tá pe rante um a data Inválida.

Se guidam e nte vai te s tar os dias pos s íve is de te r nos vários m e s e s do ano.

else { switch ( $month ) { case 2: // Fevereiro if ( $day > 29 ) { $valid = false; }

Se o dia fôr s upe rior a 29 no m ês de Fe ve re iro e ntão te rá um a data inválida.

elseif ( ( $day == 29 ) && ( $year % 4 != 0 ) ) { $valid = false; } break;

a program ar

Se tive r s ido introduzido o dia 29 , m as o ano não fôr bis s e xto e ntão a data introduzida é inválida.

case 4: // Abril case 6: // Junho case 9: // Setembro case 11: // Novembro if ( $day > 30 ) { $valid = false; } break;

Para todos os m e s e s q ue têm 30 dias (Abril, Junh o, Se te m bro, Nove m bro), s e o dia introduzido fôr m aior q ue 30 é e ntão um a data inválida.

case 1: // Janeiro case 3: // Marco case 5: // Maio case 7: // Julho case 8: // Agosto case 10: // Outubro case 12: // Dezembro if ( $day > 31 ) { $valid = false; } break; }

Se o dia fôr s upe rior a 31 nos re s tante s m e s e s (Jane iro, M arço, M aio, Julh o, Agos to, O utubro, D e ze m bro) é tam bém um a data inválida.

} } } return $valid; }

Se e m q ualq ue r altura dos te s te s s e ve rificar q ue a data é inválida o e s tado da variáve l‘$valid’ pas s a a ‘fals e ’ indicando as s im q ue a data é inválida. Se a data pas s ar por todos os te s te s com condição pos itiva e ntão o re torno da variáve ls e rá ‘true ’.

function ch ange D ate ( $inputD ate ) { $s plit= e xplode ( "/", $inputD ate ); $outputD ate = "". $s plit[2]. "/". $s plit[1]. "/". $s plit[0]; re turn $outputD ate ; }

Com a função ‘ch ange D ate ()’ proce de -s e e ntão à alte ração do form ato da data talcom o já foi re fe rido ante riorm e nte.

a program ar

D e form a a tornar m ais s im ple s a inte gração do s cript e m q ualq ue r página, cria-s e um a função q ue pe rm ite criar o form ulário de s e le cção do inte rvalo de datas.

Te rm ina e ntão a criação do fich e iro ‘date _functions .ph p’.

Ligação à Bas e de D ados

Para ace de r à inform ação re lativa à bas e de dados de form a rápida e e ficie nte cria-s e um fich e iro ‘conne ction.ph p’ q ue s e rá guardado na raiz do w e bs ite. Es te fich e iro te rá todas os dados re le vante s à ligação da Bas e de D ados utilizada para o bom funcionam e nto do s cript.

<?php

$hostname = "localhost"; $database = "nome_da_bd"; $username = "utilizador"; $password = "password"; $connection = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);

?>

Página principal

Agora q ue e s tá cons truído o s cript, falta ape nas pô-lo a trabalh ar.

<?php

include ( "statistics.php" ); include ( "date_functions.php" );

$statistics = new Statistics; $statistics -> saveStatistics ( ); ?>

Es te s e rá o código q ue de ve rá s e r colocado e m todas as páginas q ue q ue ira incluir no s is te m a de e s tatís ticas. Ape nas e s te código s e rá re s pons áve lpe la re colh a de dados do vis itante , guardando-os na bas e de dados para pos te rior tratam e nto.

Agora para re alizar a página de re s um o das e s tatís ticas :

<?php

if ((isset($_POST['begin_date'])) && (isset($_POST['end_date']))){ if(date_validation($_POST['begin_date']) && date_validation($_POST['end_date'])){ if ( $_POST[ 'begin_date' ] > $_POST[ 'end_date' ] ) { $date_interval = get_dates ( ); $begin_date = $date_interval[ 'begin_date' ]; $end_date = $date_interval[ 'end_date' ]; } else { $begin_date = $_POST[ 'begin_date' ]; $end_date = $_POST[ 'end_date' ]; } } } else {

a program ar

$date_interval = get_dates ( ); $begin_date = $date_interval[ 'begin_date' ]; $end_date = $date_interval[ 'end_date' ]; } ?>

Coloca-s e e s te bloco de código no topo da página q ue q ue ira ve r incluída no s is te m a, ante s do código H TM L. Es te conjunto de código s e rá re s pons áve lpor te s tar s e o utilizador já introduziu datas , ou s e de ve rá s e r utilizado as datas por de fe ito.

As datas q ue o utilizador e ve ntualm e nte te nh a introduzido s e rão validadas e ape nas s e rão utilizadas cas o s e ve rifiq ue m válidas , de outra form a s e rão utilizadas as datas por de fe ito.

D e s e guida s ão de m ons tradas as ins truçõe s para com ple tar a página com :

M e nu de introdução de datas

G ráfico de Totalde vis itas por dia

<?php echo InsertChart ( "charts.swf", "charts_library", "statistics.php?graph=1&begin_date=".$begin_date."&end_date=".$end_date ,390 , ,"F8F8F8", false); ?>

Re s um o de Páginas vis itadas

getPageVisits ( $begin_date , $end_date ); ?>

Conclus ão

Te rm ina-s e de s ta form a e s te tutorialpas s o-a-pas s o q ue pe rm ite de um a form a s im ple s , conh e ce r as inform açõe s e s s e nciais de um vis itante tais com o, País , de onde vêm e ntre outras.

Exis te m um a ‘infinidade ’ de s is te m as on-line q ue pe rm ite m controlar as vis itas a um w e bs ite de form a e ficaz, com o por e xe m plo, o G oogle Analy tics , m as o de fe ito de s te s s is te m as , é a q uantidade e xce s s iva de inform ação de s ne ce s s ária para um a vis ualização rápida.

A e norm e vantage m de s te s is te m a é a pos s ibilidade de s e r totalm e nte inte grado num w e bs ite , q ue s e traduz num a m ais valia, pois o utilizador pode rá optar por partilh ar a inform ação com todos os vis itante s do s e u w e bs ite ou m ante r e s ta inform ação num a áre a de ace s s o re s e rvado.

Q ue m q uis e r faze r dow nload do s cript com ple to pode ace de r a h ttp://w w w .nullde s ign.online .pt/proje ct/e s tatis ticas /.

B

runo V

az

a program ar

D e pois de ve rm os o pe rcurs o a pe rcorre r vam os com e çar com a im ple m e ntação da clas s e H e lloW orld.java

public class HelloWorld{ private native void print(); public static void main(String args[]){ new HelloWorld().print(); } static{ System.loadLibrary("HelloWorld"); } }

Na linh a 3 foi de clarado o m étodo nativo print e nas linh as 9 e 10 é dito ao Java para carre gar o bibliote ca “H e lloW orld”, q ue vam os criar de pois de re alizar m ais alguns pas s os. Em s e guida vam os com pilar a clas s e criada : javac H e lloW orld.java.

D e pois de obte rm os o fich e iro H e lloW orld.clas s vam os us ar a fe rram e nta javah do Java para criar o fich e iros h e ade r (H e lloW orld.h ), com o com ando javah -jni H e lloW orld vam os obte r o fich e iro H e lloW orld.h com o s e guinte conte údo.

/ DO NOT EDIT THIS FILE - it is machine generated / #include <jni.h> / Header for class HelloWorld /

*#ifndef _Included_HelloWorld #define _Included_HelloWorld #ifdef __cplusplus extern "C" { #endif /

  • Class: HelloWorld
  • Method: print
  • Signature: ()V /*

*JNIEXPORT void JNICALL Java_HelloWorld_print (JNIEnv , jobject);

#ifdef __cplusplus } #endif #endif

Com o pode m os ve r na linh a 15 é de clarado o h e ade r para o m étodo nativo q ue ire m os im ple m e ntar, vam os us ar e s s a h e ade r para criar o fich e iro de código nativo (H e lloW orld.c), com o pode m os ve r e m s e guida.

#include <jni.h> #include <stdio.h> #include "HelloWorld.h"

*JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv env, jobject obj){ printf("Hello World!\n"); return; }

Se obs e rvarm os vam os ve r q ue a linh a 15 do fich e iro H e lloW orld.h é praticam e nte igualao código na linh a 5 do fich e iro H e lloW orld.c.

Agora q ue já dis pom os de todos os fich e iros ne ce s s ários “H e lloW orld.java”, “H e lloW orld.clas s ”, “H e lloW orld.h ” e “H e lloW orld.c” vam os criar a nos s a bibliote ca nativa. Vam os ve r com o o faze r e m dife re nte s s is te m as ope rativos.

Linux com G CC

gcc -fPIC -I jdk/include -I jdk/include/linux -shared -o libHelloNative.so HelloNative.c

Solaris com Sun Com pile r

cc -G -I jdk /include -I jdk /include /s olaris -o libH e lloNative .s o H e lloNative .c

W indow s com M S C+ + Com pile r

cl -I jdk\include -I jdk\include\win32 -LD HelloNative.c - FeHelloNative.dll

O nde jdk é o cam inh o para a pas ta de ins talação do Java.

a program ar

Vam os agora ve r com o re alizar a pas s age m de dados e ntre Java e C através do JNI. Para is s o criam os um pe q ue no program a e m q ue vam os im prim ir um a pe rgunta, us ar a função s canfdo C para re colh e r o input e re torná-lo para o Java com o um O bje cto String. Para is s o vam os com e çar claro pe la criação do fich e iro Prom pt.java.

public class Prompt{ private native String getLine(String prompt);

public static void main(String args[]){ Prompt p = new Prompt(); String input = p.getLine("Qual o seu nome? "); System.out.println("Escreveu : " +input); }

static{ System.loadLibrary("Prompt"); } }

Em s e guida vam os ge rar o fich e iro Prom pt.h q ue irá conte r algo s e m e lh ante a e s te :

*/ DO NOT EDIT THIS FILE - it is machine generated / #include <jni.h> / Header for class Prompt / #ifndef _Included_Prompt #define _Included_Prompt #ifdef __cplusplus extern "C" { #endif /

  • Class: Prompt
  • Method: getLine
  • Signature: (Ljava/lang/String;)
  • Ljava/lang/String; / JNIEXPORT jstring JNICALL Java_Prompt_getLine(JNIEnv , jobject, jstring);

#ifdef __cplusplus } #endif #endif

Até aq ui não h á nada de novo re lativam e nte ao H e lloW orld im ple m e ntado ante riorm e nte , as novidade s e ntão agora na im ple m e ntação do fich e iro Prom pt.c q ue vai conte r algum as novidade ao níve l de JNI e no tratam e nto de Strings e m JNI-C. Vam os e ntão im ple m e ntar o s e guinte código.

#include <stdio.h> #include <jni.h> #include "Prompt.h"

*JNIEXPORT jstring JNICALL Java_Prompt_getLine(JNIEnv env, jobject obj, jstring prompt){

*char buf[128]; const jbyte str;

str = (env)->GetStringUTFChars( env,prompt,NULL);*

if(str == NULL){ return NULL; }

printf("%s",str); (env)->ReleaseStringUTFChars( env,prompt,str); scanf("%s",buf); return (env)->NewStringUTF(env,buf); }**

Com o pode m os ve r na linh a 5 nos argum e ntos do m étodo para além das variáve is de am bie nte q ue por de fe ito s ão colocadas , ne s te cas o foi adicionada m ais um a a variáve lprom pt do tipo js tring q ue corre s ponde à String dada com o argum e nto da clas s e Java. Com o o C não te m o O bje cto String com o o Java vam os te r de pas s ar a String para outra form a trabalh áve le m JNI-C, para is s o é criada um a variáve lapontador do tipo jby te , q ue de um a form a bás ica é o by te do JNI da m e s m a form a q ue o js tring é a String do JNI. O pas s o final para faze r a conve rs ão é us ar a função do JNI G e tStringUTFCh ar q ue re torna um a cópia da String dada no s e gundo argum e nto (linh a 10) e as s im a variáve ls tr vai ficar com o valor da String dado com o argum e nto ao m étodo ge tLine.