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 | 1023 | |
| 1024 | 1024 | $ip - Número do IP. |
| 1025 | 1025 | */ |
| 1026 | -function ip2geo($ip) | |
| 1026 | +function ip2geo($ip,$locaplic="..") | |
| 1027 | 1027 | { |
| 1028 | 1028 | //$ip="200.252.111.1"; |
| 1029 | 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 | 1035 | $record = geoip_record_by_addr($gi,$ip); |
| 1036 | 1036 | $resultado["country_code"] = $record->country_code . " " . $record->country_code3 . " " . $record->country_name; |
| 1037 | 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 | 468 | } |
| 469 | 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 | 475 | // gera a url para abrir o mapa |
| 472 | 476 | // interface = arquivo html que será aberto |
| 473 | 477 | // | ... | ... |
ms_registraip.php
| ... | ... | @@ -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 | 100 | \ No newline at end of file | ... | ... |
| ... | ... | @@ -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 | 49 | \ No newline at end of file | ... | ... |