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 |