Commit 27fa92dac88700b47bfe42ca887a64fb1f682855
1 parent
a6982646
Exists in
master
and in
7 other branches
Incluida opção para elaboração de mapa de visitantes. Veja no wiki mais informações.
O programa ms_registraip.php é incluido pelo ms_criamapa.php. Para funcionar em sua instalação é necessário editar o arquivo temas/visitantes.map e a string de conexão com o banco e sqls existentes em ms_registraip.php
Showing
4 changed files
with
156 additions
and
5 deletions
Show diff stats
classesphp/funcoes_gerais.php
| @@ -1023,15 +1023,15 @@ parameters: | @@ -1023,15 +1023,15 @@ parameters: | ||
| 1023 | 1023 | ||
| 1024 | $ip - Número do IP. | 1024 | $ip - Número do IP. |
| 1025 | */ | 1025 | */ |
| 1026 | -function ip2geo($ip) | 1026 | +function ip2geo($ip,$locaplic="..") |
| 1027 | { | 1027 | { |
| 1028 | //$ip="200.252.111.1"; | 1028 | //$ip="200.252.111.1"; |
| 1029 | $resultado = array(); | 1029 | $resultado = array(); |
| 1030 | - if (file_exists("../pacotes/geoip/geoipcity.inc")) | 1030 | + if (file_exists($locaplic."/pacotes/geoip/geoipcity.inc")) |
| 1031 | { | 1031 | { |
| 1032 | - require_once("../pacotes/geoip/geoipcity.inc"); | ||
| 1033 | - require_once("../pacotes/geoip/geoipregionvars.php"); | ||
| 1034 | - $gi = geoip_open("../pacotes/geoip/GeoLiteCity.dat",GEOIP_STANDARD); | 1032 | + require_once($locaplic."/pacotes/geoip/geoipcity.inc"); |
| 1033 | + require_once($locaplic."/pacotes/geoip/geoipregionvars.php"); | ||
| 1034 | + $gi = geoip_open($locaplic."/pacotes/geoip/GeoLiteCity.dat",GEOIP_STANDARD); | ||
| 1035 | $record = geoip_record_by_addr($gi,$ip); | 1035 | $record = geoip_record_by_addr($gi,$ip); |
| 1036 | $resultado["country_code"] = $record->country_code . " " . $record->country_code3 . " " . $record->country_name; | 1036 | $resultado["country_code"] = $record->country_code . " " . $record->country_code3 . " " . $record->country_name; |
| 1037 | $resultado["region"] = $record->region . " " . $GEOIP_REGION_NAME[$record->country_code][$record->region]; | 1037 | $resultado["region"] = $record->region . " " . $GEOIP_REGION_NAME[$record->country_code][$record->region]; |
ms_criamapa.php
| @@ -468,6 +468,10 @@ for($i=0;$i<($mapa->numlayers);$i++) | @@ -468,6 +468,10 @@ for($i=0;$i<($mapa->numlayers);$i++) | ||
| 468 | } | 468 | } |
| 469 | $mapa->save($tmpfname); | 469 | $mapa->save($tmpfname); |
| 470 | // | 470 | // |
| 471 | +//obtem o IP do usuário e registra no banco de dados | ||
| 472 | +//essa função pode ser comentada sem prejuízos ao funcionamento do I3Geo | ||
| 473 | +require_once($caminho."ms_registraip.php"); | ||
| 474 | +// | ||
| 471 | // gera a url para abrir o mapa | 475 | // gera a url para abrir o mapa |
| 472 | // interface = arquivo html que será aberto | 476 | // interface = arquivo html que será aberto |
| 473 | // | 477 | // |
ms_registraip.php
| @@ -0,0 +1,99 @@ | @@ -0,0 +1,99 @@ | ||
| 1 | +<?php | ||
| 2 | +/* | ||
| 3 | +Title: Registra o IP do usuário para criação do mapa de visitantes. | ||
| 4 | + | ||
| 5 | +Se vc não quiser que essa operação seja executada, basta comentar o código todo ou retirar o include existente em ms_criamapa.php. | ||
| 6 | + | ||
| 7 | +Para mostrar os visitantes, basta usar o tema temas/visitantes.map. Exemplo: | ||
| 8 | + | ||
| 9 | +http://host/i3geo/ms_criamapa.php?temasa=visitantes&layers=visitantes | ||
| 10 | + | ||
| 11 | +Esse mapfile deve ser editado para refletir a conexão correta ao banco de dados. | ||
| 12 | + | ||
| 13 | +Para o funcionamento correto dessa função, deve-se ter o pacote geoip instalado em i3geo/pacotes. | ||
| 14 | + | ||
| 15 | +É necessário também alterar os parâmetros de query no banco de dados e conexão para refletir as configurações locais do banco de dados. | ||
| 16 | + | ||
| 17 | +As informações sobre o IP do cliente são armazenados em uma tabela em seu banco de dados. Essa tabela deve ser criada e estar acessível para leitura e escrita. | ||
| 18 | + | ||
| 19 | +Exemplo de script para criação da tabela: | ||
| 20 | + | ||
| 21 | +CREATE TABLE visitantes_i3geo | ||
| 22 | +( | ||
| 23 | + gid serial NOT NULL, | ||
| 24 | + latitude numeric, | ||
| 25 | + longitude numeric, | ||
| 26 | + n integer, | ||
| 27 | + CONSTRAINT i3geo_visitantes_pkey PRIMARY KEY (gid) | ||
| 28 | +) | ||
| 29 | +WITHOUT OIDS; | ||
| 30 | +ALTER TABLE visitantes_i3geo OWNER TO pgsql; | ||
| 31 | +GRANT ALL ON TABLE visitantes_i3geo TO pgsql; | ||
| 32 | +GRANT SELECT ON TABLE visitantes_i3geo TO geodados; | ||
| 33 | +GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE visitantes_i3geo TO geoeditor; | ||
| 34 | +COMMENT ON TABLE visitantes_i3geo IS 'Registra as coordenadas dos usuários que acessam o I3Geo. É mantido pelo i3geo/ms_criamapa.php.'; | ||
| 35 | + | ||
| 36 | +File: ms_registraip.php | ||
| 37 | + | ||
| 38 | +About: Licença | ||
| 39 | + | ||
| 40 | +I3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet | ||
| 41 | + | ||
| 42 | +Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil | ||
| 43 | +Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br | ||
| 44 | + | ||
| 45 | +Este programa é software livre; você pode redistribuí-lo | ||
| 46 | +e/ou modificá-lo sob os termos da Licença Pública Geral | ||
| 47 | +GNU conforme publicada pela Free Software Foundation; | ||
| 48 | +tanto a versão 2 da Licença. | ||
| 49 | +Este programa é distribuído na expectativa de que seja útil, | ||
| 50 | +porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | ||
| 51 | +de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | ||
| 52 | +Consulte a Licença Pública Geral do GNU para mais detalhes. | ||
| 53 | +Você deve ter recebido uma cópia da Licença Pública Geral do | ||
| 54 | +GNU junto com este programa; se não, escreva para a | ||
| 55 | +Free Software Foundation, Inc., no endereço | ||
| 56 | +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
| 57 | + | ||
| 58 | +*/ | ||
| 59 | +if (file_exists($locaplic."/pacotes/geoip")) | ||
| 60 | +{ | ||
| 61 | + $r["latitude"] = ""; | ||
| 62 | + require_once($locaplic."/classesphp/funcoes_gerais.php"); | ||
| 63 | + $conexao = "host=10.1.1.36 port=5432 dbname=geodados user=pgsql password=pgsql"; | ||
| 64 | + //identifica o IP do usuário | ||
| 65 | + $ip = pegaIPcliente(); | ||
| 66 | + //$ip="200.252.111.1"; | ||
| 67 | + $r = ip2geo($ip,$locaplic); | ||
| 68 | + if($r["latitude"] == null) | ||
| 69 | + { | ||
| 70 | + $ip = pegaIPcliente2(); | ||
| 71 | + $r = ip2geo($ip); | ||
| 72 | + } | ||
| 73 | + //registra no banco o IP | ||
| 74 | + if(($r["latitude"] != null) && ($r["latitude"] != "")) | ||
| 75 | + { | ||
| 76 | + $pgconn = pg_connect($conexao); | ||
| 77 | + // | ||
| 78 | + $sqlVerificaExistencia = "select * from visitantes_i3geo where latitude = ".$r["latitude"]." and longitude = ".$r["longitude"]; | ||
| 79 | + // | ||
| 80 | + $result = pg_query($pgconn, $sqlVerificaExistencia); | ||
| 81 | + $numrows = pg_num_rows($result); | ||
| 82 | + if ($numrows != 0) | ||
| 83 | + { | ||
| 84 | + // | ||
| 85 | + $sqlGravaMaisUm = "update visitantes_i3geo set n = n+1 where (latitude = ".$r["latitude"]." and longitude = ".$r["longitude"].")"; | ||
| 86 | + // | ||
| 87 | + $result = pg_query($pgconn, $sqlGravaMaisUm); | ||
| 88 | + } | ||
| 89 | + else | ||
| 90 | + { | ||
| 91 | + // | ||
| 92 | + $sqlGravaNovo = "insert into visitantes_i3geo (gid,latitude,longitude,n) values(default,".$r["latitude"].",".$r["longitude"].",1)"; | ||
| 93 | + // | ||
| 94 | + $result = pg_query($pgconn, $sqlGravaNovo); | ||
| 95 | + } | ||
| 96 | + pg_close($pgconn); | ||
| 97 | + } | ||
| 98 | +} | ||
| 99 | +?> | ||
| 0 | \ No newline at end of file | 100 | \ No newline at end of file |
| @@ -0,0 +1,48 @@ | @@ -0,0 +1,48 @@ | ||
| 1 | +SYMBOLSET ../symbols/simbolos.sym | ||
| 2 | +FONTSET "../symbols/fontes.txt" | ||
| 3 | +LAYER | ||
| 4 | + NAME visitantes # ok | ||
| 5 | + TYPE point | ||
| 6 | + STATUS OFF | ||
| 7 | + TEMPLATE "none.htm" | ||
| 8 | + CONNECTIONTYPE postgis | ||
| 9 | + CONNECTION "user=geodados password=geodados dbname=geodados host=10.1.1.36 port=5432" | ||
| 10 | + DATA "the_geom FROM (select PointFromText('POINT(' || longitude || ' ' || latitude || ')',4291) as the_geom,n,gid FROM public.visitantes_i3geo) as foo USING UNIQUE gid USING SRID=4291" | ||
| 11 | + METADATA | ||
| 12 | + TEMA "Usuários" | ||
| 13 | + CLASSE "SIM" | ||
| 14 | + END | ||
| 15 | + CLASS | ||
| 16 | + Name 'uma visita' | ||
| 17 | + EXPRESSION ('[n]'eq '1') | ||
| 18 | + SYMBOL 'ponto' | ||
| 19 | + SIZE 6 | ||
| 20 | + COLOR 255 255 204 | ||
| 21 | + OUTLINECOLOR 50 50 50 | ||
| 22 | + END # CLASS | ||
| 23 | + CLASS | ||
| 24 | + Name 'mais de uma visita' | ||
| 25 | + EXPRESSION (([n]>1)and([n]<=3)) | ||
| 26 | + SYMBOL 'ponto' | ||
| 27 | + SIZE 8 | ||
| 28 | + COLOR 255 255 204 | ||
| 29 | + OUTLINECOLOR 50 50 50 | ||
| 30 | + END # CLASS | ||
| 31 | + CLASS | ||
| 32 | + Name 'mais de uma visita' | ||
| 33 | + EXPRESSION (([n]>3)and([n]<=5)) | ||
| 34 | + SYMBOL 'ponto' | ||
| 35 | + SIZE 10 | ||
| 36 | + COLOR 255 255 204 | ||
| 37 | + OUTLINECOLOR 50 50 50 | ||
| 38 | + END # CLASS | ||
| 39 | + CLASS | ||
| 40 | + Name 'mais de uma visita' | ||
| 41 | + EXPRESSION ([n]>5) | ||
| 42 | + SYMBOL 'ponto' | ||
| 43 | + SIZE 11 | ||
| 44 | + COLOR 247 233 164 | ||
| 45 | + OUTLINECOLOR 50 50 50 | ||
| 46 | + END # CLASS | ||
| 47 | +END | ||
| 48 | +END | ||
| 0 | \ No newline at end of file | 49 | \ No newline at end of file |