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 | ... | ... |